Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-删除两个列表中的一个值实例_Python_List - Fatal编程技术网

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
方法将大大简化这一过程。