0

如果列表中的一个项目在另一个列表中重复,我如何检查 Python?我想我应该使用 FOR 循环,逐项检查,但我陷入了这样的困境(我知道这是不正确的):

def check(a, b):
    for item in b:
        for item1 in a:
            if b[item] in a[item1]:
                b.remove(b[item1])

与第一个列表相比,我想删除第二个列表中的重复元素。

编辑:我确实假设列表 a 具有在列表 b 中重复的项目。这些项目可以是任何类型。

期望的输出:a=[a,b,c] b=[c,d,e]

我想附加两个列表并打印:abcde

4

3 回答 3

2

假设a并且b不包含需要保留的重复项并且这些项都是可散列的,则可以使用 Python 内置set

c = list(set(b) - set(a))
# c is now a list of everything in b that is not in a

这适用于:

a, b = range(7), range(5, 11)

但它不适用于:

a = [1, 2, 1, 1, 3, 4, 2]
b = [1, 3, 4]

# After the set operations c would be [2]
# rather than the possibly desired [2, 2]

如果需要重复,您可以执行以下操作:

set_b = set(b)
c = [x for x in a if x not in b]

使用setforb将进行查找O(1)而不是O(N)(这对于小列表无关紧要)。

于 2013-07-27T12:58:58.693 回答
1

使用set命令并list取回列表。

d = list(set(a + b))

list.sort()如果您也想对列表进行排序,也可以使用。

于 2013-07-27T13:16:39.540 回答
1

您可以使用 Python 的set操作而无需 for 循环:

>>> a = [1,2]
>>> b = [2]
>>> set(a) - set(b)
set([1])
>>>
于 2013-07-27T12:59:07.393 回答