gpt4 book ai didi

Python 求和 itertools.count?

转载 作者:行者123 更新时间:2023-11-28 19:35:45 25 4
gpt4 key购买 nike

我在使用 itertools.count 函数时遇到了一些问题,我不太明白它的作用。我希望下面的代码能够完成 Project Euler problem 2 .

我知道我可以用一个简单的 while 循环来写这个,但是有没有一种方法可以用列表推导来做到这一点?这段代码只是卡住,因为我猜它会随着 count() 的变化而变得无穷大。我希望它会在 x > MAX 之后停止,但我知道那不会发生。有没有办法停止像下面这样的生成器表达式中的计数?

def fib(n):
if (n <= 1): return 1
else: return fib(n-1) + fib(n-2)


MAX = 4000000

infiniteFib = (fib(x) for x in count())

s = (x for x in infiniteFib if x < MAX and x % 2 == 0)

print sum(s)

最佳答案

你可以使用 takewhile :

>>> from itertools import count, takewhile, imap
>>> sum(x for x in takewhile(lambda x: x < 4000000, imap(fib, count())) if x % 2 == 0)
4613732

关于Python 求和 itertools.count?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com