如果列表中的项目在另一个列表中重复,我如何检查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
答案 0 :(得分:2)
假设a
和b
不包含需要保留的重复项和这些项都是可清除的,您可以使用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()
。