Python - 删除两个列表中的一个值实例

时间:2015-04-12 10:56:00

标签: python list

目前,我想删除一个循环的值,如果它存在于两个列表中,如下:

for value in Word1:
    if value in Word2:
        Word1.remove(value)
        Word2.remove(value)

但是,当我希望它返回['a', 'b', 'b']时,此代码将返回{1}}为Word1:['a', 'a', 'a', 'b', 'b', 'b']和Word2:['a', 'a', 'b', 'b']。是什么导致了这个问题? Pythontutor的可视化似乎并没有帮助我。

1 个答案:

答案 0 :(得分:0)

在迭代时,您不能更改列表。 首先,确定要删除的元素,然后将其删除:

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]