如何用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.