为什么这个列表减法循环不能同时删除b和c?

时间:2019-07-02 00:59:49

标签: python list

我在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

1 个答案:

答案 0 :(得分:2)

当您这样分配lt_sub = lt时,您正在创建对lt的引用,而不是副本。在for循环中循环访问lt时,一旦删除llt循环中将没有更多条目(因为它现在已减小为2,因此您可以重复了两次)。

要解决此问题,请将lt_sub作为单独的列表,请参见here以获得解释。