全部,
我想定义一个 int(987654321) <=> [9, 8, 7, 6, 5, 4, 3, 2, 1] 转换器,如果 int 数的长度 < 9,例如 10 列表将是 [0,0,0,0,0,0,0,1,0] ,如果长度 > 9,例如 9987654321 ,列表将为 [9, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> i
987654321
>>> l
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> z = [0]*(len(unit) - len(str(l)))
>>> z.extend(l)
>>> l = z
>>> unit
[100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1]
>>> sum([x*y for x,y in zip(l, unit)])
987654321
>>> int("".join([str(x) for x in l]))
987654321
>>> l1 = [int(x) for x in str(i)]
>>> z = [0]*(len(unit) - len(str(l1)))
>>> z.extend(l1)
>>> l1 = z
>>> l1
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> a = [i//x for x in unit]
>>> b = [a[x] - a[x-1]*10 for x in range(9)]
>>> if len(b) = len(a): b[0] = a[0] # fix the a[-1] issue
>>> b
[9, 8, 7, 6, 5, 4, 3, 2, 1]
我测试了上述解决方案,但发现这些解决方案可能没有我想要的更快/足够简单,并且内部可能存在与长度相关的错误,有人可以与我分享这种转换的更好解决方案吗?
谢谢!
请您参考如下方法:
也许我遗漏了什么,但这还不够吗(没有值检查)?
def int_to_list(i):
return [int(x) for x in str(i).zfill(9)]
def list_to_int(l):
return int("".join(str(x) for x in l))
引用: str.zfill
