我是Python的新手,我一直在浏览各种内置函数的文档.
说到最大/最小功能:
`max(arg1, arg2, *args[, key])` or `max(iterable[, key])`
Run Code Online (Sandbox Code Playgroud)
我知道arg1,arg2等或者iterable可以是一系列随机值,但是"key"元素的作用是什么?有人可以给我一个它的应用程序的例子吗?
通常当我看到这个内置函数时,我会自动想象一个随机列表,说x = [1,2,3],而max(x)将产生3的值.但是,"关键"功能可以为我提供什么?除了通过简单直接的列表之外,还可以通过其他方式操作此函数?
我是Python新手,并没有真正快速掌握Python Docs中的所有术语.
谢谢,艾德
该键用于传递自定义比较功能.
示例:max按列表长度输出,其中arg1,arg2都是列表.
>>> max([1,2,3,4], [3,4,5], key=len)
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
示例:输出最大值args列表的元素总和
>>> max([1,2,3,4,5], [3,4,5], key=sum)
[1, 2, 3, 4, 5]
>>> max([1,2,3,4], [3,4,5], key=sum)
[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
您可以类似地为不同的arg对象使用特定的比较函数.
当您想要查找序列的最大值并且需要最大值的具体定义时,可以使用它。
例如,假设我有一个tuple. 如果我只是max在没有key参数的情况下使用,它将默认使用每个元组中的第一项
>>> l = [(1,3), (2,4), (1,9), (4,1)]
>>> max(l)
(4, 1)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要列表中的最大值,但要考虑 的第二个元素,该怎么办tuple?
>>> max(l, key = lambda i : i[1])
(1, 9)
# Or
>>> import operator
>>> max(l, key = operator.itemgetter(1))
(1, 9)
Run Code Online (Sandbox Code Playgroud)
另外,对于字符串列表,您想找到最大值,就好像它们是数值一样?
>>> l = ['4', '11', '6', '31']
Run Code Online (Sandbox Code Playgroud)
只需使用max就会按字典顺序对它们进行排序
>>> max(l)
'6'
Run Code Online (Sandbox Code Playgroud)
但我又可以使用key
>>> max(l, key = lambda i: int(i))
'31'
Run Code Online (Sandbox Code Playgroud)