Skip to main content
 首页 » 编程设计

python之键如何在最小值和最大值中工作

2025年05月04日16linjiqin

我运行了以下语句序列:

>>> a = range(10) 
>>> min(a, key=lambda x: x < 5.3) 
6 
>>> max(a, key=lambda x: x < 5.3) 
0 

最小值和最大值与我的预期完全相反。

关于 min 和 max 的 python 文档非常粗略。

谁能给我解释一下“ key ”是如何工作的?

请您参考如下方法:

键参数的解释

关键是这样的:

a_list = ['apple', 'banana', 'canary', 'doll', 'elephant'] 
 
min(a_list, key=len) 

返回'娃娃',和

max(a_list, key=len) 

返回'大象'

您为其提供一个函数,它使用应用于每个项目的函数结果的最小值或最大值来确定在结果中返回哪个项目。

申请

如果您的函数返回一个 bool 值,就像您的一样,对于 min,它将返回 True 或 False 的最小值中的第一个(为 False),即 6 或最大值(True)中的第一个,即0.

要查看此内容:

>>> a 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> import pprint 
>>> pprint.pprint(dict((i, i<5.3) for i in a)) 
{0: True, 
 1: True, 
 2: True, 
 3: True, 
 4: True, 
 5: True, 
 6: False, 
 7: False, 
 8: False, 
 9: False} 

为什么?

>>> min([True, False]) 
False 
>>> max([True, False]) 
True 

解释

为什么 True 大于 False?

>>> True == 1 
True 
>>> False == 0 
True 
>>> issubclass(bool, int) 
True 

事实证明,True 和False 与1 和0 密切相关。他们甚至分别评价相同。