Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 作业:永无止境的循环5**200000_Python_Performance_Loops_For Loop_Python 3.x - Fatal编程技术网

Python 作业:永无止境的循环5**200000

Python 作业:永无止境的循环5**200000,python,performance,loops,for-loop,python-3.x,Python,Performance,Loops,For Loop,Python 3.x,我有一个家庭作业:在数字5**200000中找到50000个连续数字的最大和。 我知道如果我在这个数字上做一个for循环,它不会在一个可行的时间内结束。 我试着把这个数字放在一个列表中,并在列表中迭代,但我不明白它是如何工作的?为什么不像第一种情况?什么使它更快? 这是我的密码: def maxdigits(number,digits): s=str(number) #conversting the number to a string l = [int(char) for ch

我有一个家庭作业:在数字5**200000中找到50000个连续数字的最大和。 我知道如果我在这个数字上做一个for循环,它不会在一个可行的时间内结束。 我试着把这个数字放在一个列表中,并在列表中迭代,但我不明白它是如何工作的?为什么不像第一种情况?什么使它更快? 这是我的密码:

def maxdigits(number,digits):
    s=str(number) #conversting the number to a string
    l = [int(char) for char in s]
    maximum = current = sum(l[:digits])
    for i in range(0,len(l)-digits):
        current = current-l[i]+l[i+digits]
        if current > maximum: maximum = current
    return maximum    

代码运行得更快,因为它没有遍历列表

[ 0, 1, ..., 5 ** 200000 ]
您正在迭代

[ 0, 1, ..., 139 795 - 50000 ]
比第一个列表小几个数量级

计算数字位数的方法是:

200000 * log5 + 1

我想你是在问,为什么对数字
5**200000
的数字进行循环会很快完成,而对
0
(5**200000)-1
范围内的所有数字进行循环需要很长时间


我认为这对你来说不明显的唯一原因是因为这些数字很大,很难记下来。再想一想。在
1000000
的七位数字上循环,或者在
0
999999
的百万数字上循环,会更快吗?
5**200000
中有
139795
位。做一个简单的循环
139795次
并不需要大量的工作。做一个简单的循环
5**200000次是一个巨大的工作量。这是一个荒谬的数字。如果宇宙中的每一个原子都是一台计算机,并且在整个宇宙的生命周期中运行,我怀疑它们是否能够成功地做任何事情
5**200000次。

定义“数字5**200000中50000个连续数字的最大和”。这与数字之和有何不同?你是说50000个连续数字吗?无论如何,你这里的问题是关于数学洞察力,而不是代码。是的,我将5**200000转换为字符串。代码在我的机器上运行良好。你在做什么?我不清楚你在问什么。我想我理解这个任务,你的代码看起来要么正确,要么非常接近。你是说这比你想象的要快?你能不能提供你说的代码比较慢,因为你对它的描述对我来说不够清楚。