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
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