Python でProject Euler の問題 2を解決しようとしていますが、イテラブルに基づく戦略を決定しました。
これがフィボナッチ数列のジェネレータです。
def fnFibonacci():
fibNumPrev, fibNumCurrent = 0, 1
while True:
yield fibNumCurrent
fibNumPrev, fibNumCurrent = fibNumCurrent, fibNumCurrent + fibNumPrev
400 万未満で 2 で割り切れるフィボナッチ数を除外しようとすると、うまくいかず、すべてが除外されます。
sum(list(itertools.takewhile(lambda x: x < 4e6 and x % 2 == 0 , fnFibonacci())))
ただし、これは両方とも(均一条件を無視します):
sum(list(itertools.takewhile(lambda x: x < 4e6, fnFibonacci())))
そしてこのリスト内包表記:
sum([fibNum for fibNum in list(itertools.takewhile(lambda x: x < 4e6, fnFibonacci())) if fibNum % 2 == 0])
仕事。何が起こっているのか本当にわかりません。