(这是欧拉项目问题14)
我正试图通过使用Itertools使我的Python技能多样化。在
我想从Python的itertools中的生成器获取一组迭代次数(1000000)中最大返回值的索引。
这个函数起作用了,但是我不知道如何有效地获得最大值,而不将它存储在一个巨大的一百万长的列表中,我认为这很难有效。有没有聪明的方法?(编辑:也许这是最简单的方法?)在
目前的代码是,当链条达到100时,它停止,这是错误的。在#Project Euler Problem 14
#Which starting number, under one million, produces the longest chain?
import itertools
def length():
x=1
while True:
l=0
c=x #Create the running integer.
while c>1:
if c%2==0:
#Number is even, divide it by two.
c=c/2
l+=1
else:
#Number is odd, multiply by three and add one.
c=3*c+1
l+=1
yield l+1 #Add the final one as well and show the chain length.
x+=1 #Increment
print list(itertools.takewhile(lambda x:x<100,length()))