如何更快地将整数转换为单独的数字列表?
大家好,
我想定义一个可以把数字 int(987654321) <=> [9, 8, 7, 6, 5, 4, 3, 2, 1] 转换成列表的工具。如果这个数字的长度 < 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]
我试过上面的方法,但发现这些方法可能没有我想要的那么快或者简单,而且可能还有长度相关的错误。有没有人可以分享一个更好的解决方案来进行这种转换呢?
谢谢!
4 个回答
0
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会按照我们的要求去做事情。
比如说,你可能想要在用户输入一个数字时,程序才进行计算。如果用户输入的不是数字,程序就应该告诉他“请重新输入一个数字”。这就是条件判断的作用,它帮助程序根据不同的情况做出不同的反应。
在代码中,我们通常会使用一些简单的语句来实现这些条件判断。这样,程序就能更智能地处理用户的输入,避免出现错误。
总之,条件判断就像是给程序加了一双“眼睛”,让它能看到不同的情况,并做出相应的反应。
def convert(number):
stringified_number = '%s' % number
if len(stringified_number) < 9:
stringified_number = stringified_number.zfill(9)
return [int(c) for c in stringified_number]
>>> convert(10)
[0, 0, 0, 0, 0, 0, 0, 1, 0]
>>> convert(987654321)
[9, 8, 7, 6, 5, 4, 3, 2, 1]
1
那这个呢:
def int_to_list(num)
return list ("%010d" % num)
10
也许我漏掉了什么,但这样做不应该就足够了吗(不需要检查值)?
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