a=[1,1,2,2,3,3,3,3]
for i in a:
if i==2:
a.remove(2)
print(a)
a.remove(2)需要向右缩进一格,属于if内。
a=[1,1,2,2,3,3,3,3]
for i in a:
if i==2:
a.remove(2)
print(a)
做过remove索引变掉了。 for i in a[:] 加一个[:]就可以以
a=[1,1,2,2,3,3,3,3]
for i in a[:]:
if i==2:
a.remove(2)
print(a)
移除了一个元素之后其后面元素的索引值都会减一,列表长度也会减一。
但循环索引只会加1,不会跟着减1。这样会跳过一个元素.
比如一开始循环索引值是0,移除了索引值是0的元素之后,原来索引值为1的元素的索引值减一变成0。原来索引值为2的元素的索引值减一变成1。
下一次循环索引加1。移除索引值是1的元素(原来索引值为2的元素),原来索引值为1的元素就被跳过了。
所以在移除操作时要倒着循环
a=[1,1,2,2,3,3,3,3]
for i in range(len(a)-1,-1,-1):
if a[i]==2:
a.pop(i)
print(a)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!