初学者Python:从列表中删除元素

时间:2015-10-23 14:04:08

标签: python list iteration

我正在研究Project Euler问题2.我需要找到所有偶数Fibonacci数的总和,最多可达400万。我有一个函数可以生成所有可能的斐波纳契数,直到用户输入的upperBound。我将这个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

我不确定为什么会出现这种错误。

1 个答案:

答案 0 :(得分:0)

请注意,在迭代时不应该更改数组,也要从数组中删除元素,你应该使用元素的索引,而不是值。您可以使用列表的index方法获取具有特定值的第一个元素的索引。至于你的任务,最好使用列表理解:

def evenFibs(upperBound):
    list_of_fibs = getFibs(upperBound)
    return [value for value in list_of_fibs if value % 2 == 0]