我一直在努力工程欧拉问题,尝试和学习python,我写了第二个问题的解决方案(找到斐波那契序列中的偶值项的总和,不超过四百万)。该代码给了我正确的解决方案,但它需要我使用模分裂两次,以从我生成的斐波那契数列表中删除奇数值。这是我写的解决方案:使用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循环两次以删除所有奇数条件?
你可以做fibonacci_list = [X在fibonacci_list X如果x%2 == 0],因为列表解析创建无论如何,新的列表。 –