Python 将数字的数字写入数组
我想用一个很长的数字来计算。如何在Python2.7中实现这一点?我想以某种方式将数字写入一个数组,这样我就可以使用数组(x)访问数字: 问题是,这个数字有太多的数字,需要很长时间才能手动完成。那么我怎样才能自动完成这项工作呢?您可以使用Python 将数字的数字写入数组,python,list,python-2.7,Python,List,Python 2.7,我想用一个很长的数字来计算。如何在Python2.7中实现这一点?我想以某种方式将数字写入一个数组,这样我就可以使用数组(x)访问数字: 问题是,这个数字有太多的数字,需要很长时间才能手动完成。那么我怎样才能自动完成这项工作呢?您可以使用 print map(int, str(number)) str函数将number转换为字符串 map函数将int函数应用于stringifed number的每个元素,以将字符串转换为整数 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9, 1,
print map(int, str(number))
str
函数将number
转换为字符串
map
函数将int
函数应用于stringifed number的每个元素,以将字符串转换为整数
输出
[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
您可以简单地迭代数字中的每个数字并将其推入数组。试试这个
result = []
for d in str(number):
result.append (int(d))
print result
您也可以使用列表理解链接
array = [int(x) for x in str(number)]
作为替代方案,纯数学解如下所示。通过反复除以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]
+1我真的很喜欢地图的智能化使用,这是我不知道的。从四个方面来看,答案似乎更好,但这是可行的too@NaveedHasan是的,我真的很喜欢四人的回答。我花了大约2分钟的时间来编写代码并进行测试。与此同时,四人组发布了一个令人敬畏的回答:“干得好。”。两个小的改进:divmod在应用于int时返回int,因此不需要
int(d)
,并且insert(0,d)
而不是append
,以摆脱反向步骤。提问者给出123456789123456789
作为示例数据,因此(至少在2.7上)divmod
返回一个长值insert(0,d)
将以二次时间运行-我更希望使用反向
并获得线性时间。不过谢谢你的建议。+1你也可以用这里在左侧更快地插入。
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]