tlist = ['a','b','c','d']
for t in tlist:
tlist.remove(t)
print(f"remove:{t} tlist:{tlist}")
print(f"tlist:{tlist}")
输出结果:
remove:a tlist:['b', 'c', 'd']
remove:c tlist:['b', 'd']
tlist:['b', 'd']
代码原意想在遍历的过程中一个个删除元素,结果到最后列表的4个元素还剩下2个。
原因是:遍历时索引按照递增顺序进行。第1次正常删除索引0的元素后,第2次循环指向索引1的元素,此时的元素不是原来列表的'b',而是当前列表索引1的元素'c'。当删除'c‘后,循环指向索引2,此时列表已没有索引2的元素,因此退出循环。到最后只删除了'a','c'。