gpt4 book ai didi

python - Python中的列表联合算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:21 25 4
gpt4 key购买 nike

我现在正在尝试使用列表联合算法,具有以下规范:如果 L1 中的元素在 L1 中出现的次数多于它在 L2 中出现的次数,则联合应返回最大出现次数,即它的数量出现在 L1 中,如果元素在 L2 中出现的次数多于在 L1 中出现的次数,则 L1 和 L2 的角色会互换。如果 L1 和 L2 不相交,则并集仅返回常规集并集。到目前为止,我的思考过程是:

  1. 遍历 L1。
  2. 检查 L1 中的任何元素是否也在 L2 中。
  3. 如果 L1 中的元素也在 L2 中,检查哪个列表具有更大的元素count
  4. 如果 L1 和 L2 不相交,则返回正则集并集。
  5. 将 L2 和 L1 颠倒,重复第 3 步。
  6. 归还工会。

我正在考虑使用 max 函数来告诉 Python 返回列表,其中联合中每个元素的重数是该元素在 L1 和 L2 中出现的最大次数.想法?

最佳答案

对于提供多重集的 collections 标准模块来说,这是一个完美的工作:

from collections import Counter

result_list = list((Counter(list1)|Counter(list2)).elements())

Counter 对象在这里表示一个多重集(通常包含超过 1 个其元素副本的集合),并集运算符 | 保留每个元素的最大计数,并且elements() 返回一个迭代器,其中每个元素返回与其计数对应的次数。

如果您真的不需要列表但可以在代码中使用多重集,那么 Counter(list1) | Counter(list2) 是联合 multiset你需要的。

关于python - Python中的列表联合算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888164/

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