python从2个列表中删除重复项

2024-04-17

我正在尝试从 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(使用前将#替换为@)

python从2个列表中删除重复项 的相关文章

随机推荐