我在python 2.7中有一个列表,我想从其中删除存在于另一个列表中的所有项目。循环似乎很快就停止了,我不确定为什么只从lt_sub中删除b而不删除b和c吗?
bad = ['b','c']
lt = ['a','b','c']
lt_sub = lt
for l in lt:
if l in bad:
lt_sub.remove(l)
print lt_sub
答案 0 :(得分:2)
当您这样分配lt_sub = lt
时,您正在创建对lt
的引用,而不是副本。在for循环中循环访问lt
时,一旦删除l
,lt
循环中将没有更多条目(因为它现在已减小为2,因此您可以重复了两次)。
要解决此问题,请将lt_sub
作为单独的列表,请参见here以获得解释。