python最大迭代次数_在Python的Itertools中获取一组迭代次数中最大值的索引

博主正在尝试使用Python的itertools库解决欧拉项目问题14,目标是在不超过一百万的数字中找到产生最长数列的起始数字,而不将所有结果存储在大列表中。他们当前的代码在链长达到100时停止,但希望找到更有效的方法来找到最大值。他们寻求一种避免创建完整列表并能直接找到最大索引的解决方案。
摘要由CSDN通过智能技术生成

(这是欧拉项目问题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()))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值