将数字的数字写入数组

时间:2014-01-03 11:38:12

标签: python list python-2.7

我想用很长的数字分开计算。我怎么能在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]

问题是,该数字有这么多位数,手动执行该操作需要很长时间。那我怎么能自动完成呢?

4 个答案:

答案 0 :(得分:17)

您可以使用mapintstr这样的功能

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