例子:a,b 是两个列表 要把b中和a相同的元素删除掉
a=['1', '2', '3']
b=['2', '3', '4','1']
for i in b:
if i in a:
b.remove(i)
print(b)
得到的结果是:['3', '4']
为什么3没有被删除呢?
a=['1', '2', '3']
b=['2', '3', '4','1']
for i in b:
print(i)
if i in a:
b.remove(i)
print(b)
加入print(i)得到的结果如下
说明循环并没有访问b中的3
这是因为在 i 是b中第一个元素的时候(也就是2) 2被remove了 后面的所有元素都向前移动一位 b中原本3所在的位置变成了4
针对这一问题 可以把代码修改成这样:
a=['1', '2', '3']
b=['2', '3', '4','1']
i=0
while i<len(b):
if b[i] in a:
b.remove(b[i])
i-=1
i+=1
print(b)