在python中,我需要能够遍历一个19位的数字;这样做的典型方式是什么?我正在使用python 2.7.x;但如果有可行的解决方案,将使用python 3.x.
我的人数很多;例如1000**5
(甚至更大的1000**10
);我需要在for循环中遍历这个数字列表。我知道它需要的时间;但是因为我找不到循环通过这么大的数字的方法,我不知所措。
我在python 2.7中尝试使用xrange
,range
和itertools.islice
并收到Overflow
错误。
由于
答案 0 :(得分:3)
以下是python 3.x:
python中的int
类型没有限制。如果你想迭代0,1,2 ... n,其中n是一个19位数字,你可以这样做:
for i in range(n):
pass #whatever you like
虽然这需要很长时间。
答案 1 :(得分:2)
不是那么漂亮,但只是使用while(),你将克服这个问题(加上它适用于任何版本的Python):
i=0
while (i<1000**10):
i += 1
# do some stuff
答案 2 :(得分:0)
如果您尝试迭代单个数字:
long_int_string = '34234345456575657'
for digit in [int(x) for x in long_int_string]:
# do something useful with digit
print digit
答案 3 :(得分:0)
听起来你想要遍历整数的各个数字。
对于这样的情况,知道x % 10
等于十进制中正整数x
的最右边数字是有用的。
考虑到这一点,您可以通过迭代使用模数并减少数量来获得每个数字。
def splitIntoDigits(x):
digits = []
while x != 0:
digits.insert(0, int(x%10))
x /= 10
return digits
print splitIntoDigits(15016023042)
[1, 5, 0, 1, 6, 0, 2, 3, 0, 4, 2]
另外,喜剧单行答案:
>>> [int(num/(10**x)%10) for x in range(int(math.log(num,10)),-1,-1)]
[1, 5, 0, 1, 6, 0, 2, 3, 0, 4, 2]