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

Python 为什么这个列表减法循环不能同时删除b和c?,python,list,Python,List,我在Python2.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 当您这样分配lt_sub=lt时,您是在创建对lt的引用,而不是副本。当您在for循环中迭代lt时,一旦删除l,lt在循

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

当您这样分配
lt_sub=lt
时,您是在创建对
lt
的引用,而不是副本。当您在for循环中迭代
lt
时,一旦删除
l
lt
在循环中没有更多的条目(因为它现在已减小到2的大小,并且您已经迭代了两次)


要修复此问题,请将
lt_sub
作为一个单独的列表,请参阅以获取解释。

Do
lt_sub=lt[:]
相反,这样您将处理两个列表,而不是像您的情况那样处理一个列表。