如何在python中处理非常大的数字(19位)
在python中,我需要能够循环使用19位数字;这样做的典型方式是什么?我使用的是python 2.7.x;但如果有可行的解决方案,我们将使用Python3.x 我有很多<例如,code>1000**5(甚至更大的如何在python中处理非常大的数字(19位),python,largenumber,Python,Largenumber,在python中,我需要能够循环使用19位数字;这样做的典型方式是什么?我使用的是python 2.7.x;但如果有可行的解决方案,我们将使用Python3.x 我有很多1000**5(甚至更大的1000**10);我需要在for循环中遍历这个数字列表。我知道这需要多少时间;但是,因为我找不到一种方法来循环处理这么大的数字,所以我不知所措 我在Python2.7中尝试了xrange、range和itertools.islice,收到了溢出错误 感谢对于Python3.x,以下内容是正确的: py
1000**10
);我需要在for循环中遍历这个数字列表。我知道这需要多少时间;但是,因为我找不到一种方法来循环处理这么大的数字,所以我不知所措
我在Python2.7中尝试了xrange
、range
和itertools.islice
,收到了溢出
错误
感谢对于Python3.x,以下内容是正确的: python中的
int
类型没有限制。如果您想迭代0,1,2…n,其中n是一个19位数字,您可以执行以下操作:
for i in range(n):
pass #whatever you like
尽管这需要很长的时间。对于Python3.x来说,以下是正确的: python中的
int
类型没有限制。如果您想迭代0,1,2…n,其中n是一个19位数字,您可以执行以下操作:
for i in range(n):
pass #whatever you like
尽管这需要很长时间。如果您尝试迭代单个数字:
long_int_string = '34234345456575657'
for digit in [int(x) for x in long_int_string]:
# do something useful with digit
print digit
如果您试图迭代单个数字:
long_int_string = '34234345456575657'
for digit in [int(x) for x in long_int_string]:
# do something useful with digit
print digit
听起来像是要遍历整数的各个数字。 对于这样的情况,知道
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]
听起来像是要遍历整数的各个数字。 对于这样的情况,知道
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]
虽然不如,但只要使用while()就可以解决问题(另外,它可以与任何版本的Python一起使用):
i=0
while(i不如for漂亮,但只要使用while()就可以解决这个问题(另外,它可以与任何版本的Python一起使用):
i=0
虽然(我什么意思?循环?需要更多描述。循环方式?作为字符串?用于什么目的?这是一个数字序列吗?数字是如何存储的?对于python来说,19位数字没有问题。你想做什么?@Lattyware在任何<3版本上都会耗尽内存。range
创建完整的list进行迭代。xrange
创建一个生成器表达式(在c中),因此,在开始迭代之前,它不会尝试填充长度为123456789001234567890的列表。在Python 3中,range是一个迭代器,可以安全使用。请注意,我发布的内容只在3.x中起作用,这是一个公平的观点-它更像是一个笑话,而不是一个实际的建议,但它确实在3.x上运行。你是什么意思?需要mor吗e描述。循环如何?作为字符串?用于什么目的?这是一个数字序列吗?数字是如何存储的?对于python来说,19位数字没有问题。你想做什么?@Lattyware会在任何<3版本上耗尽内存。range
创建完整的列表以进行迭代。xrange
改为创建生成器表达式(在c中),因此,在开始迭代之前,它不会尝试填充长度为123456789001234567890的列表。在Python 3中,range是一个迭代器,可以安全使用。请看,我发布的内容只在3.x中起作用,这是一个公平的观点-它更像是一个笑话,而不是实际的建议,但它确实在3上运行。x@J.F.Sebastian谢谢,注意。@user973917它对我有效,你确定你在3.x上吗?如果是,你会得到什么错误?@J.F.Sebastian谢谢,注意。@user973917它对我有效,你确定你在3.x上吗?如果是,你会得到什么错误?