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]
fromhelp(list.remove)
:L.remove(value)——删除第一次出现的值。