您正在比较两个不同的事物。
对于您的第一个案例,如果我们查看文档:https://docs.python.org/3/library/functions.html#max https://docs.python.org/3/library/functions.html#max
max(arg1, arg2, *args[ 键])
返回可迭代中最大的项或两个或多个参数中最大的项。 key 参数指定一个单参数排序函数,类似于 list.sort() 所使用的函数。
这意味着关键lambda x: (-abs(x), x)
是一个排序函数,这意味着对于每个x
在可迭代中a
, (-abs(x), x)
被评估并用于对项目进行排序以找出迭代器的最大元素,并根据该排序,1
是最大元素
In [24]: a = [1,4,6,-8,-10]
In [40]: print(max(a, key=lambda x: (-abs(x), x), default=0))
1
对于第二种情况,如果我们查看文档:https://docs.python.org/3/library/functions.html#map https://docs.python.org/3/library/functions.html#map
映射(函数,可迭代,...)
返回一个迭代器,该迭代器将函数应用于可迭代的每个项目,并产生结果
这意味着该函数lambda x: (-abs(x), x)
应用于每个元素x
of a
,所以我们回来(-abs(x), x)
对于每个 x,以及max
应用于更新的迭代器,这是最大的元组(-1,1)
In [25]: b = list(map(lambda x: (-abs(x), x), a))
In [26]: b
Out[26]: [(-1, 1), (-4, 4), (-6, 6), (-8, -8), (-10, -10)]
In [27]: max(b)
Out[27]: (-1, 1)