【发布时间】:2015-10-23 14:04:08
【问题描述】:
我正在解决 Project Euler 问题 2。我需要找到所有偶数斐波那契数的总和,最高可达 400 万。我有一个函数可以生成所有可能的斐波那契数,直到用户输入的上限。我将这个 fib 列表传递给另一个函数,以消除奇数值。我正在尝试遍历列表并删除奇怪的元素。它返回一个错误说:
in evenFibs
del list_of_fibs[value]
IndexError: list assignment index out of range
这是我的 evenFibs() 代码:
def evenFibs(upperBound):
list_of_fibs = getFibs(upperBound)
for value in list_of_fibs:
if value % 2 != 0:
del list_of_fibs[value]
return list_of_fibs
我不确定为什么会发生此错误。
【问题讨论】:
-
在迭代列表时从列表中删除项目不是一个好主意 :)
-
您应该使用 Ben 的链接中接受的答案中的方法。如果您想知道为什么您的方法不起作用,请尝试阅读stackoverflow.com/questions/10812272/… 的答案
-
问个问题,你为什么不建立一个偶数列表呢?这样您就不必担心一开始就删除它们。
-
@RolfofSaxony 好点,但如果我想到这一点,我就不会学习列表理解了!
-
你永远不会从成功中学习,只能从失败中学习,希望你失败的越多,你学到的越多;)