Python 为什么这个列表减法循环不能同时删除b和c?
我在Python2.7中有一个列表,我想从中删除其他列表中存在的任何项。循环似乎突然停止,我不知道为什么它只从lt_sub中删除b而不删除b和cPython 为什么这个列表减法循环不能同时删除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在循
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
作为一个单独的列表,请参阅以获取解释。Dolt_sub=lt[:]
相反,这样您将处理两个列表,而不是像您的情况那样处理一个列表。