itertools.count 関数に問題があり、その機能がよくわかりません。以下のコードでProject Euler の問題 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)