You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多列表按列提取众数:给定三列表求各列最频现数值

嘿,这个需求很清晰,我给你两种Python实现方案,都是简单易懂的:

解法一:使用collections.Counter(最直观高效)

Counter是Python标准库中专门用来统计元素频率的工具,用它来处理这个问题非常顺手:

from collections import Counter

list1 = [1, 5, 5, 4, 2]
list2 = [1, 4, 5, 3, 4]
list3 = [2, 5, 4, 3, 4]

result = []
# 用zip把三个列表按索引位置打包,每一个元组就是对应"列"的所有元素
for column in zip(list1, list2, list3):
    # 统计当前列每个数字的出现次数
    num_counts = Counter(column)
    # most_common(1)返回出现次数最多的元素及其次数,格式为[(数字, 次数)],取第一个元素即可
    most_frequent_num = num_counts.most_common(1)[0][0]
    result.append(most_frequent_num)

print(result)  # 输出: [1, 5, 5, 3, 4]

说明:

  • zip(list1, list2, list3)会自动把三个列表对应索引的元素打包成元组,比如第一个元组是(1, 1, 2),正好对应你说的"第1列数值集合";
  • Counter会快速统计每个元素的出现频率,省去手动计数的麻烦;
  • 如果某一列有多个数字出现频率相同(比如列是(1,2,1)和(2,1,2)),most_common会返回最先出现的那个高频元素(Python3.7+版本中,Counter会保留元素的插入顺序)。

解法二:手动统计频率(无需导入模块)

如果你不想依赖标准库的Counter,也可以用字典手动实现频率统计:

list1 = [1, 5, 5, 4, 2]
list2 = [1, 4, 5, 3, 4]
list3 = [2, 5, 4, 3, 4]

result = []
for column in zip(list1, list2, list3):
    freq_dict = {}
    # 遍历当前列的每个数字,统计次数
    for num in column:
        freq_dict[num] = freq_dict.get(num, 0) + 1
    # 找到频率最高的数字:用max函数,按字典的值(频率)排序
    most_frequent_num = max(freq_dict, key=freq_dict.get)
    result.append(most_frequent_num)

print(result)  # 输出: [1, 5, 5, 3, 4]

说明:

  • freq_dict.get(num, 0)表示如果字典里没有num这个键,就返回默认值0,然后加1实现计数;
  • max(freq_dict, key=freq_dict.get)会遍历字典的所有键,找到对应值(频率)最大的那个键,也就是我们要的高频数字。

内容的提问来源于stack exchange,提问作者Fran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:08:54