Python 哪些函数可以用作';key=func';min()和max()函数中的参数?

Python 哪些函数可以用作';key=func';min()和max()函数中的参数?,python,max,min,Python,Max,Min,例如: names = ['Rodrigo', 'Matthew', 'Adam', 'Will'] def get_len(name): return len(name) print(max(names, key=get_len)) print(min(names, key=get_len)) # or print(max(names, key=lambda name : len(name))) print(min(names, key=lambda name : len(na

例如:

names = ['Rodrigo', 'Matthew', 'Adam', 'Will']


def get_len(name):
    return len(name)


print(max(names, key=get_len))
print(min(names, key=get_len))
# or
print(max(names, key=lambda name : len(name)))
print(min(names, key=lambda name : len(name)))

如何知道是否可以将函数用作“key=func”参数?

如文档所示,
min()
(和
max()
)需要一个单参数排序函数,就像用于
list.sort()的函数一样

因此,我们需要一个函数,它从应用了
min()
max()
的集合中获取一个参数,并返回一个可以用
排序的值

因此,对于字符串列表
names
,这将是一个函数,它将单个
str
作为参数,并使用
对字符串进行排序,返回可比较的值,例如其长度

因此,即使这样也能奏效:

names = ['Rodrigo', 'Matthew', 'Adam', 'Will']

print(max(names, key=len))
回答您的一般性问题“如何知道是否可以将函数用作
min()
的参数?”

您可以检查功能是否:

  • 接受单个参数
  • 参数的类型与将应用于的集合
    min()
    的元素类型匹配
  • 返回可以使用

keyfunc
必须返回一个定义了
\uu lt\uu
(小于)操作的值
max
将函数应用于
names
的每个元素,并返回由小于关系定义的具有最高值的元素。如果
names
的多个元素测试为不小于任何其他元素,则
max
将返回其中的第一个元素

也许更简单的方法是,如果函数的返回类型是可排序的(int、float、str等),那么函数是可用的


您对
len(element)
的定义工作得很好——我想您已经测试过了。

如果它接受列表中的一个项作为参数并返回一个可比较的值(例如int)。顺便说一句,您可以使用
key=len
来代替定义
get\u len
。虽然有一个更正式的定义,但我的理解是:函数中的参数数量应该等于lambda表达式中的参数数量您可以使用任何您想要的可调用参数!当然,这样做会得到错误的结果。它应该接受一个参数