我正在尝试从列表中删除元素,即使该元素是偶数,代码也会部分运行,但不会从其中删除12个元素。我被困在这一点上,有谁知道这是什么问题,可能是什么优化的解决方案吗?
lst=[0,3,5,8,12,2] #created a list
for i in lst:
if(i%2==0):
lst.remove(i) #removes elements from the list
print(lst)
O/P:[3, 5, 12]
答案 0 :(得分:1)
修改列表当您遍历列表是常见的陷阱。
正确而安全的方法是实际上使用列表理解或过滤器重新创建列表。
列表理解版本:
lst = [x for x in lst if x%2!=0]
过滤器版本:
lst = list(filter(lambda x: x%2!=0, lst))
两个代码段均导致:
lst = [3, 5]
答案 1 :(得分:0)
只需使用python功能强大的列表理解功能即可:
filtered_list =[i for i in old_list if i % 2 != 0]