Python Max/Min函数的工作原理和关键是什么?

use*_*720 4 python function

我是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中的所有术语.

谢谢,艾德

mu *_*u 無 5

该键用于传递自定义比较功能.

示例: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对象使用特定的比较函数.


Cor*_*mer 3

当您想要查找序列的最大值并且需要最大值的具体定义时,可以使用它。

例如,假设我有一个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)