我运行了以下语句序列:
>>> 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 密切相关。他们甚至分别评价相同。
