python insert 和 del 的顺序是什么?当我试图同时操作一个元素时

what is the order of python insert and del ? when I am trying to manipulate an element simultaneously

enter image description here

>>> n = 0
>>> a_list = ['a','p','l','e']
>>> a_list.insert(1,'a')
>>> a_list.insert(3,'p')
>>> for a in a_list: # I want to del all 'a'
...     if(a == 'a'):
...             del a_list[n]
...     n = n + 1
...     print(a)
...
a
p
p
l
e

这里我想在插入a和p之后删除所有的'a's。但结果不是我想的那样。我怀疑它的解释器有特定的删除和插入顺序。它可能不会删除所有 'a'

您在遍历列表时正在从列表中删除项目。不要那样做——当你试图访问它时,内存正在移动。

删除所有 'a' 是一项非常适合 filter() 或列表理解的任务:

n = 0
a_list = ['a','p','l','e']
a_list.insert(1,'a')
a_list.insert(3,'p')
print(list(filter(lambda x: x != 'a', a_list))) # filter()
print([char for char in a_list if char != 'a']) # list comprehension