在两个列表之间查找不同的项目

时间:2020-10-20 18:36:18

标签: python list

我有两个列表,列表a和列表b。 lista有75060项,listb有62116项。 我正在尝试计算列表a中存在但列表b中不存在的项目。我做了以下事情:

list_difference = [item for item in lista if item not in listb]
len(list_difference)

list_difference的结果是2447。这个数字让我感到困惑。因为lista比listb多12944个项目,所以至少不是12944吗?

有人可以给我一些见解吗? list_difference语法有什么问题吗?

3 个答案:

答案 0 :(得分:1)

我怀疑lista的项目不是唯一的。

答案 1 :(得分:1)

这是由于重复造成的。 查看此示例以更好地理解它:

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

>>>print(len(a)-len(b))
12

k=[i for i in a if i not in b]

print(len(k))
1

如您所见,由于重复,结果为1而不是12

答案 2 :(得分:0)

这应该给您想要的答案:

x = set(lista).difference(set(listb)) #get elements in lista and not listb
final = []
for i in x:
    final.extend(a.count(i)*[i,]) #get the occurrence of element in lista and not listb and add all to final list
print(len(final))