两个列表(包括重复列表)的交集?

2024-04-23 23:26:07 发布

您现在位置: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中有三个1,列表b中也只有两个,所以结果应该只有两个


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)

相关问题 更多 >