有这样一个列表:
s=list('abcdefg')
现在因为某种原因我们需要从s中踢出一些不需要的元素,方便起见这里直接以踢出所有元素的循环代替:
for e in s:
s.remove(e)
结果却是:
In [3]: s
Out[3]: ['b', 'd', 'f']
多次示例后发现,这种remove方式保持着隔1删1的规律。
那么改一下代码看看出了什么问题:
In [14]: i=0 In [15]: for e in s: ...: print("第"+str(i)+"次循环删前:s=",s) ...: print(e) ...: s.remove(e) ...: print("第"+str(i)+"次循环删后:s=",s) ...: i=i+1