从长整型创建列表
我有一个非常长的数字(1000位)。我想把它转换成一个列表,你会怎么做呢?因为:
list(n)
出现了错误:'long'对象是不可迭代的
3 个回答
0
一种方法是使用 list('%d' % mynumber)
Python 2.6.6 (r266:84292, Apr 20 2011, 11:58:30)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> n=8948974395274589470928357238945723894572395723572358257
>>> list(n)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'long' object is not iterable
>>> list('%d' % n)
['8', '9', '4', '8', '9', '7', '4', '3', '9', '5', '2', '7', '4', '5', '8', '9', '4', '7', '0', '9', '2', '8', '3', '5', '7', '2', '3', '8', '9', '4', '5', '7', '2', '3', '8', '9', '4', '5', '7', '2', '3', '9', '5', '7', '2', '3', '5', '7', '2', '3', '5', '8', '2', '5', '7']
3
如果你想把数字的字符串表示中的每个字符作为单独的列表项:
digits = list(str(n))
注意,如果你只是想一次处理一个字符,其实不需要创建列表。字符串本身就可以逐个遍历:
for d in str(n):
print d,
如果你想把每个数字(作为整数)当作单独的列表项,并且假设这个数字是正数(这样就不用处理烦人的负号):
digits = [int(d) for d in str(n)]
7
你问的问题不是特别清楚,但如果你想要遍历数字的每一位,可以先把它转换成字符串:
x = str(n)
你可以像对待列表一样遍历字符串。
如果你真的想要一个真正的列表(我能想到的唯一原因就是你想修改数字),你可以这样做:
xl = list(str(n))
如果有人想把一个1000位的整数转换成字节列表,答案是……通常不需要,这在大多数情况下没有什么意义(这么大的数字通常不会用普通的数据类型来存储或处理)。如果你需要把它转换成紧凑的二进制形式,可以看看NumPy,如果你经常处理这么大的数字,使用它是比较合适的。
如果你处理的是更常见的数字(比如8位、16位、32位或64位),可以查看struct模块。