从long int创建一个列表

时间:2011-06-07 06:08:45

标签: python

我有一个很长(1000位)的号码。 我想把它转换成一个列表,你会怎么做呢:

list(n)
  

TypeError:'long'对象不是   可迭代

3 个答案:

答案 0 :(得分:7)

您要求的内容并不完全清楚,但如果您想要的是迭代数字,只需将其转换为字符串:

x = str(n)

您可以迭代字符串,就像它是一个列表一样。

如果确实想要一个真正的列表(我想到的唯一原因是你想要修改数字),你可以这样做:

xl = list(str(n))

(如果有人出现寻找将1000位整数转换为字节列表的方法,答案是......通常不会,它在真正意义上并不重要大多数上下文(大数据没有作为典型的本机数据类型存储/操作)。如果你需要将它变成一个打包的二进制形式,请查看NumPy,如果你是的话,你可能应该使用它经常处理这么大的数字。

如果您有更典型的数字(例如8,16,32或64位),请查看附带的struct模块。)

答案 1 :(得分:3)

如果您希望将数字的字符串表示形式中的每个字符作为单独的列表项:

digits = list(str(n))

请注意,如果您只想一次遍历第一个字符,则无需创建列表。字符串本身是可迭代的:

for d in str(n):
   print d,

如果你想将每个数字(作为一个整数)作为一个单独的列表项,并假设该数字是正数(以便不必处理讨厌的减号):

digits = [int(d) for d in str(n)]

答案 2 :(得分: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']