目前,我想删除一个循环的值,如果它存在于两个列表中,如下:
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的可视化似乎并没有帮助我。
答案 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]