我一直在研究 Project Euler 问题以尝试学习 python,并且我为第二个问题编写了一个解决方案(在斐波那契数列中找到不超过四百万的偶数项的总和)。该代码为我提供了正确的解决方案,但它要求我使用两次模除法,以便从我生成的斐波那契数列中删除奇数值。这是我写的解决方案:
term_1 = 1
term_2 = 2
fibonacci_list = [1]
while term_2 < 4000000:
fibonacci_list.append(term_2)
term_1, term_2 = term_2, term_1 + term_2
for num in fibonacci_list:
if num % 2 != 0
fibonacci_list.remove(num)
for num in fibonacci_list:
if num % 2 != 0
fibonacci_list.remove(num)
return sum(fibonacci_list)
如果我只放入一个 for 循环,列表 fibonacci_list 将变为以下内容:
[2, 5, 8, 21, 34, 89, 144, 377, 610, 1597, 2584, 6765, 10946, 28657, 46368, 121393, 196418, 514229, 832040, 2178309, 3524578]
所有奇数项不应该通过模除法测试并被删除吗?为什么我需要运行两次 for 循环来删除所有奇数项?