gpt4 book ai didi

python - 在 2 个 python 列表之间找到 "overlap"

转载 作者:太空狗 更新时间:2023-10-29 17:11:44 25 4
gpt4 key购买 nike

给定 2 个列表:

a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]

我想找到“重叠”:

c = [3,4,5,5,6]

如果我可以提取 a 和 b 中不在 c 中的“余数”部分,我也很喜欢。

a_remainder = [5,]
b_remainder = [1,4,7,]

注意:a 有三个 5,b 有两个。b 有两个 4,a 有一个。

结果列表 c 应该有两个 5(由列表 b 限制)和一个 4(由列表 a 限制)。

这给了我想要的,但我忍不住认为还有更好的方法。

import copy

a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]

c = []
for elem in copy.deepcopy(a):
if elem in b:
a.pop(a.index(elem))
c.append(b.pop(b.index(elem)))

# now a and b both contain the "remainders" and c contains the "overlap"

另一方面,对于我所要求的,有什么比“重叠”和“剩余”更准确的名称?

最佳答案

Python 2.7 中可用的

collection.Counter 可用于实现完全符合您要求的多重集。

a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]

a_multiset = collections.Counter(a)
b_multiset = collections.Counter(b)

overlap = list((a_multiset & b_multiset).elements())
a_remainder = list((a_multiset - b_multiset).elements())
b_remainder = list((b_multiset - a_multiset).elements())

print overlap, a_remainder, b_remainder

关于python - 在 2 个 python 列表之间找到 "overlap",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094083/

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