在for循环中相互比较两个列表中的项目?

时间:2013-07-27 12:56:56

标签: python list for-loop

如果列表中的项目在另一个列表中重复,我如何检查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]

我想附加两个列表并打印:a b c d e

3 个答案:

答案 0 :(得分:2)

假设ab不包含需要保留的重复项这些项都是可清除的,您可以使用Python内置{{ 3}}:

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]

set使用b会使查找O(1)而不是O(N)(对于小型列表无关紧要)。

答案 1 :(得分:1)

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

>>> a = [1,2]
>>> b = [2]
>>> set(a) - set(b)
set([1])
>>>

答案 2 :(得分:1)

使用set命令和list获取列表。

d = list(set(a + b))

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