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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐