如何从列表中删除不满足条件的元素?

时间:2019-04-12 15:50:54

标签: python python-3.x loops

我想从列表中删除2的倍数。我该怎么办?

a = list(range(1, 11))
print(a)
for ele in a:
    if ele % 2 == 0:
        a.pop(ele)
print(a)

在出现条件之前,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

条件出现后,我期望a = [1, 3, 5, 7, 9] 但我收到此错误IndexError: pop index out of range

如何获取2的多个倍数的索引以将其弹出? 我是初学者。

1 个答案:

答案 0 :(得分:3)

如果在要迭代的列表上使用pop,则正在修改该列表,并且会遇到类似问题,一种更好的方法可能是创建一个新列表,然后将奇数元素放入其中列表。
另外,您正在使用pop来使用列表的值,而不是在错误的索引上使用它。 (https://docs.python.org/3/tutorial/datastructures.html#more-on-lists

a = list(range(1, 11))
odd_list = []
for ele in a:
    if ele % 2 != 0:
        odd_list.append(ele)
print(odd_list)
#[1, 3, 5, 7, 9]