如何用Python求众数

如何用Python求众数

在书里(参考文献[1])看到有这样的代码:

max(set(A),key=A.count)

它可以返回列表A中的众数,现对其进行解释。

set

博客 python set() 用法.中提到:set() 函数用于创建一个无序不重复元素集,删除重复数据。不过直接用max(A,key=A.count),结果是一样的。

key

关于max()函数中的参数key,Python官方文档中写道:The key argument specifies a one-argument ordering function like that used for list.sort().
在论坛中搜索,一般情况下会用匿名函数lambda指定key,例如:

A=[3,5,5,5,1]
max_A=max(A,key=lambda x: x-1)
print(max_A)
#结果:5

但若是函数较为复杂,可以先def一个函数,而后将函数名传给key,例如:

def calculate(x):
	return -(x-3)^2
A=[3,5,5,5,1]
max_A=max(A,key=calculate)
print(max_A)
#结果:3

因此猜想,方法也类同函数,因此可以将list.count(不需要写括号和实参)传给key,但list可以用于max的方法(要有返回值,且返回值可用于比较大小)只有.count(),故此猜想没有得到验证。
此外,list.sort()也有可选参数key,其官方文档中写到:for example, key=str.lower。此处同样是直接调用方法而没有写括号(),与本例相同。

参考文献

[1]王磊,王晓东著.机器学习算法导论[M].北京:清华大学出版社,2019:182.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值