删除方法(删除奇数)

时间:2017-09-25 08:42:50

标签: python

我们想要编写一个删除列表中所有奇数的函数。

这是我最终尝试过的:

def eliminate(x):
    for i in range(0, (len(x)-1)):
        if x[i] % 2 != 0:
           x.remove(x[i])
    print(x)
eliminate([1,2,5,6])

我收到错误:"列表索引超出范围!"

如果你能提供帮助,我真的很感激,因为它让我发疯,我无法弄清楚我做错了什么。我也尝试了popdelete方法。但我不知道我在这里做错了什么。不过,这绝对是第四条线。有什么想法吗?!

1 个答案:

答案 0 :(得分:-1)

在python中,每当你发现自己正在做for i in range(len(x)):时,

你可以用几种不同的方式做同样的事情,例如:

x = [1,2,5,6]

for i in x:
    if i % 2 == 1:
        x.remove(i)

print x

正如您所看到的,您不需要索引来执行此操作,for循环将项目直接从列表中拉出。

编辑 - 显然这在一般情况下不起作用,因为python编辑了列表。似乎.remove似乎不是一个非常好的方法。

另一种选择是使用列表理解:

x = [1,2,5,6]

rem = [i for i in x if i % 2 == 0]

print rem

或者你可以使用filter(但我不会因为没有特别的原因我不喜欢过滤。)