Skip to main content
 首页 » 编程设计

python之更快地将 int 转换为单个数字列表

2025年05月04日12Leo_wl

全部,

我想定义一个 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