利用Python求取数字列表的众数(有多个众数的列表同样适用)

1.分析思路

       首先,应统计数字列表中每个数字出现的次数;其次,对每个数字出现的次数进行排序;最后选取出现次数最多的数字即为该数字列表的众数。

2.代码实现

import operator

def seekingMode(numList):               # 列表1:numList;列表2:uniqueList(列表1去重后得到的列表)。
    uniqueList=list(set(numList))       # 先将列表1转换成集合除去重复值,再将其还原为列表。
    frequencyDict={}                    # 定义一个空字典,用于存储列表1中的数字(key)及其出现的次数(value)。
    for num in uniqueList:
        frequency=numList.count(num)    # 统计某一数字在列表1中出现的次数。
        frequencyDict[num]=frequencyDict.get(num,0)+frequency       # 将数字及其出现次数存储在字典中。
    sortedDict=sorted(frequencyDict.items(),key=operator.itemgetter(1),reverse=True)    # 对列表1中数字出现的次数进行排序(降序)。
    maxFrequency=sortedDict[0][1]                                   # 获得列表1中数字出现的最大次数。
    keys=[key for key,value in frequencyDict.items() if value==maxFrequency]    # 根据value(列表1中数字出现的最大次数)获取字典中所有该取值的key。
    keys.sort()                         # 排序(升序)
    return keys

#函数测试
list1=[1,2,3,8,1,2,0,32,1,6,3,32,32,45,45,45,32.1,32.1,32.1,98.2,98.2,98.2]
mode=seekingMode(list1)
print(mode)

3.测试结果

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值