Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数字的数字写入数组_Python_List_Python 2.7 - Fatal编程技术网

Python 将数字的数字写入数组

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,

我想用一个很长的数字来计算。如何在Python2.7中实现这一点?我想以某种方式将数字写入一个数组,这样我就可以使用数组(x)访问数字:

问题是,这个数字有太多的数字,需要很长时间才能手动完成。那么我怎样才能自动完成这项工作呢?

您可以使用

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]