我想用很长的数字分开计算。我怎么能在Python2.7中做到这一点?我想到了以某种方式在数组中写入数字,以便我可以使用array(x)访问数字:
number = 123456789123456789
array = [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]
问题是,该数字有这么多位数,手动执行该操作需要很长时间。那我怎么能自动完成呢?
答案 0 :(得分:17)
print map(int, str(number))
str
函数将number
转换为字符串。
map
函数将int
函数应用于stringifed数字的每个元素,以将字符串转换为整数。
<强>输出强>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]
如果您一次又一次地这样做,就像在循环中一样,那么列表理解将比map
方法更快
number = 123456789123456789
from timeit import timeit
print timeit("map(int, str(number))", "from __main__ import number")
print timeit("[int(dig) for dig in str(number)]", "from __main__ import number")
我机器上的输出
12.8388962786
10.7739010307
答案 1 :(得分:3)
你也可以使用列表理解链接。
array = [int(x) for x in str(number)]
答案 2 :(得分:3)
作为替代方案,纯粹的数学解决方案如下。通过重复除以10并取余数,您可以提取每个数字。
n = 123456789123456789
result = []
while n != 0:
n, d = divmod(n, 10)
result.append(int(d))
result.reverse()
print result # [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]
答案 3 :(得分:1)
您可以简单地遍历数字中的每个数字并推入数组。试试这个
result = []
for d in str(number):
result.append (int(d))
print result