Python-删除两个列表中的一个值实例
当前,如果两个列表中都存在一个循环值,我希望删除该值,如下所示:Python-删除两个列表中的一个值实例,python,list,Python,List,当前,如果两个列表中都存在一个循环值,我希望删除该值,如下所示: for value in Word1: if value in Word2: Word1.remove(value) Word2.remove(value) 然而,当我期望它返回['a','b','b']时,该代码正在为单词1:['a','a','a','b']和单词2:['a','a','b','b']返回['a','b']。是什么导致了这个问题?Pythontutor的可视化似乎对我没
for value in Word1:
if value in Word2:
Word1.remove(value)
Word2.remove(value)
然而,当我期望它返回
['a','b','b']
时,该代码正在为单词1:['a','a','a','b']
和单词2:['a','a','b','b']
返回['a','b']
。是什么导致了这个问题?Pythontutor的可视化似乎对我没有帮助。在迭代列表时,您不能更改列表。
首先,确定要删除的元素,然后删除它们:
to_be_removed = set(Word1).intersection(Word2)
Word1 = [w for w in Word1 if w not in to_be_removed]
Word2 = [w for w in Word2 if w not in to_be_removed]
您在迭代列表时更改了列表的长度-这是一个非常糟糕的举动。请注意,使用
set
方法将大大简化这一过程。