0

在 python 中,我需要能够循环遍历一个 19 位数字;这样做的典型方法是什么?我正在使用 python 2.7.x;但如果有可行的解决方案,将使用 python 3.x。

我有很多;1000**5(甚至更大1000**10)例如;我需要在 for 循环中循环浏览这个数字列表。我知道这需要时间;但是因为我找不到一种方法来循环这么大的数字,所以我很茫然。

我在 python 2.7 中尝试过 , 和 并xrange收到range错误。itertools.isliceOverflow

谢谢

4

4 回答 4

3

以下适用于 python 3.x:

python中的int类型没有限制。如果你想遍历 0,1,2...n 其中 n 是一个 19 位数字,你可以这样做:

for i in range(n):
    pass #whatever you like

虽然这需要很长时间。

于 2012-09-28T20:01:50.077 回答
2

不如 for 漂亮,但只需使用 while() 即可解决问题(而且它适用于任何版本的 Python):

i=0
while (i<1000**10):
    i += 1
    # do some stuff
于 2012-09-28T20:29:42.217 回答
0

如果您尝试迭代单个数字:

long_int_string = '34234345456575657'
for digit in [int(x) for x in long_int_string]:
    # do something useful with digit        
    print digit
于 2012-09-28T20:07:40.150 回答
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]
于 2012-09-28T20:08:59.573 回答