for ... in ... loop(Python)跳过列表中的一些值

时间:2014-01-04 18:58:58

标签: python

我在Python中编写了一个函数,它将一个列表作为输入,包含所有整数。 我应该删除所有奇数,让偶数保留并返回列表。

这是我的功能:

def purify (lst):
    for key in lst:
        if key % 2:
            lst.remove(key)
return lst

当我运行它时,这些是我得到的结果:(这是一些测试用例)

  

print purify([1,2,3,4,5,6,7,8,9])

结果:

  

1   3   五   7   9   [2,4,6,8]

另一个测试案例: 当我使用这一行时:

  

print purify([4,5,5,4,5,5])

结果:

  

4   五   4   五   [4,4,5,5]

我不确定发生了什么,如果我删除了“if”条件,那么就没有问题(像这样):

def purify (lst):
    for key in lst:
        print key
return lst

它打印列表中的所有值,不会跳过任何

我做错了吗?

1 个答案:

答案 0 :(得分:0)

运算符%返回一个整数值而不是布尔值,因此当返回值为0时,它会跳过该语句。 你也正在修改你正在迭代的列表,不是很好......

试试这个:

def purify (lst):
    retLst = []
    for key in lst:
        if key % 2 == 0:
            lst.append(key)
    return retLst

应该工作。