Python中.count与.count()的区别?列表众数求解代码疑问
列表.count与.count()在max(key=...)场景下的区别
核心区别一目了然:
- Array.count():这是调用
count方法,必须传入一个元素参数(比如Array.count(2)),执行后返回该元素在列表中的出现次数(整数)。如果不带参数直接写Array.count(),会触发TypeError——因为count方法要求必须传一个位置参数。 - Array.count:这是引用
count方法本身,不是执行它。它是一个可调用的方法对象,能被其他函数(比如这里的max)用来后续调用。
结合你给出的代码:
def function(Array): return max(set(Array), key = Array.count)
max函数的key参数需要接收一个可调用对象——当max遍历set(Array)中的每个元素时,会自动把当前元素作为参数传给这个可调用对象,用返回值作为排序/比较的依据。
具体执行流程是:
set(Array)把列表去重,得到所有唯一元素;- 对每个唯一元素
x,max会调用Array.count(x),得到x在原列表中的出现次数; - 比较这些次数,返回次数最多的那个元素。
如果把代码改成key=Array.count(),会直接报错:因为count()必须传元素参数,此时没有传入,Python会提示TypeError: list.count() takes exactly one argument (0 given),程序根本无法运行。
简单总结:当需要让另一个函数帮你自动传参数调用方法时,传方法本身(不带括号);当你自己要直接获取结果时,调用方法(带括号+参数)。
内容的提问来源于stack exchange,提问作者SoleKopes
相关产品推荐
相关产品推荐

