包含重复项的两个列表的交集?

2024-06-16 14:45:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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

[1,1,2,3,4]

请注意,这与以下问题不同: Python intersection of two lists keeping duplicates 因为即使列表a中有3个1,但列表b中只有2个,所以结果应该只有2个。


Tags: of列表keepinglistsduplicatestwointersection
2条回答

您可以使用^{}来完成此操作,这将在获取交集时为每个元素提供在任一列表中找到的最低计数。

from collections import Counter

c = list((Counter(a) & Counter(b)).elements())

输出

[1, 1, 2, 3, 4]

简单,无需额外导入,易于调试:)

缺点:列表b的值已更改。如果你不想改变b,就写一份b

c = list()
for x in a:
    if x in b:
        b.remove(x)
        c.append(x)

相关问题 更多 >