Python forloop索引的列表正在更改?

Python forloop索引的列表正在更改?,python,Python,我有一些简单的代码: a = [1,2,3,4,3,3,5] for letter in a: print (letter) if letter == 3: a.remove(letter) print ('a=',a) 输出显示: 1 2 3 3 5 a= [1, 2, 4, 3, 5] 我希望看到: 1 2 3 4 3 3 5 a=[1,2,4,5] 发生了什么事?在循环中,“a”列表似乎也在同时更新。如何修复for循环以获得预期的输出?它将删除索引3中的

我有一些简单的代码:

a = [1,2,3,4,3,3,5]
for letter in a:
  print (letter)
  if letter == 3:
     a.remove(letter)

print ('a=',a)     
输出显示:

1
2
3
3
5
a= [1, 2, 4, 3, 5]
我希望看到:

1
2
3
4
3
3
5
a=[1,2,4,5]

发生了什么事?在循环中,“a”列表似乎也在同时更新。如何修复for循环以获得预期的输出?

它将删除索引3中的项,而不是值为3的项。下面的列表符合您的要求

a = [letter for letter in a if letter != 3]

[编辑]不,我对“删除”的理解是错误的-我把它和“pop”混为一谈:
a=[x代表x,如果x!=3]
from
help(list.remove)
L.remove(value)——删除第一次出现的值。