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表达式中的参数数量您可以使用任何您想要的可调用参数!当然,这样做会得到错误的结果。它应该接受一个参数