forloop索引的列表正在改变?

时间:2015-10-28 23:36:19

标签: 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循环以获得预期的输出?

1 个答案:

答案 0 :(得分:-1)

它正在删除索引3处的项目,而不是值为3的项目。以下列表理解可以满足您的需求。

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

[编辑]不,我错了“删除” - 我把它与“pop”混淆了