我正在尝试从 2 个列表中删除重复项。所以我写了这个函数:
a = ["abc", "def", "ijk", "lmn", "opq", "rst", "xyz"]
b = ["ijk", "lmn", "opq", "rst", "123", "456", ]
for i in b:
if i in a:
print "found " + i
b.remove(i)
print b
但我发现匹配项后面的匹配项不会被删除。
我得到这样的结果:
found ijk
found opq
['lmn', 'rst', '123', '456']
但我期望结果是这样的:
['123','456']
我怎样才能修复我的功能来做我想做的事?
谢谢。
您的问题似乎是您正在更改正在迭代的列表。相反,迭代列表的副本。
for i in b[:]:
if i in a:
b.remove(i)
>>> b
['123', '456']
但是,使用列表理解怎么样?
>>> a = ["abc", "def", "ijk", "lmn", "opq", "rst", "xyz"]
>>> b = ["ijk", "lmn", "opq", "rst", "123", "456", ]
>>> [elem for elem in b if elem not in a ]
['123', '456']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)