为了账号安全,请及时绑定邮箱和手机立即绑定

求数组中出现频率最多的数 出错,请各位帮忙查看,非常感谢

求数组中出现频率最多的数 出错,请各位帮忙查看,非常感谢

111111111111111Q 2016-07-07 12:11:40
结果不是5,不是哪里代码写错,谢谢帮忙纠错
查看完整描述

2 回答

已采纳
?
清波

TA贡献165条经验 获得超90个赞

第一次迭代就返回 ,所以这个函数返回的就是 第一个元素了。

Python中有 现成的模块做这个,下面代码:

import collections


data = [1,2,5,10,-20,5,5]
most_common_elem = collections.Counter(data).most_common()
## 下面懒得写了。。。 从返回结果中 挑选 元素吧。。。

解释:可以查看 Counter 的help 信息。

如果自己定义这个函数的话:

data = [1,2,5,10,-20,5,5]

def most_common(data):
    if not data:
        return data
    counter_sort = sorted(map(lambda x:(data.count(x),x),set(data)))
    most_num = counter_sort[-1][0]
    return list(map(lambda x:x[-1],filter(lambda x:x[0] == most_num,counter_sort)))
    
## 用推导式再试试。。。
def most_common(data):
    if not data:
        return data
    counter_sort = sorted([(data.count(x),x) for x in set(data)])
    most_num = counter_sort[-1][0]
    return [x[-1] for x in counter_sort if x[0] == most_num]

没有做 太多的 参数检查,下午有点困。就这样吧。。。

查看完整回答
1 反对 回复 2016-07-07
?
weibo_请输入一个名字____0

TA贡献1条经验 获得超1个赞

 按照你的思路 , 只要把return 和for循环对其即可。

查看完整回答
1 反对 回复 2016-07-15
  • 2 回答
  • 0 关注
  • 1994 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信