gpt4 book ai didi

python - 删除两个具有重复元素的列表之间的公共(public)元素

转载 作者:行者123 更新时间:2023-12-02 19:06:43 26 4
gpt4 key购买 nike

我需要你的帮助,因为我对这个问题有点困惑。

我有两个包含重复元素的列表:

L = [1,2,5,2,4,1,9]
S =[4,2,9,1]

我想得到两个列表之间的“差异”,就像我做的那样LS = L-S ,结果应该是 LS = [1,2,5] 。我知道l2永远是 L 的子集,因此S永远不会有 L 中不存在的值.

请注意,只有一个 1和一个2已从 L 中删除,因为只有一个 1和一个2SL可以重复元素 n次,不仅仅是2次。

你知道是否有一种“简单”的方法可以做到这一点?我不想得到 O(n^2)程序。

非常感谢!

最佳答案

使用collections.Counter (Python 版本的 multi-set )

from collections import Counter

L = [1, 2, 5, 2, 4, 1, 9]
S = [4, 2, 9, 1]

LS = list((Counter(L) - Counter(S)).elements())
print(LS)

输出

[1, 2, 5]

此方法的总体复杂度为 O(n)

关于python - 删除两个具有重复元素的列表之间的公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64943062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com