lambda(h,t)中的-h是什么(-h,t)呢?

时间:2017-12-30 01:44:16

标签: python python-3.x lambda

以下是整个功能:

def dailyTemperatures( temperatures):
   queue = []
   for p in sorted(temperatures, key=lambda (h, t): (-h, t)):
       print (p[1])
       queue.insert(p[1], p)
   return queue

输入:

[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

输出:

[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

我知道lambda是一个创建匿名函数的构造函数。在此匿名函数ht作为参数传递。当h成为-h时会发生什么?

2 个答案:

答案 0 :(得分:3)

lambda (h, t): (-h, t)正在使用元组参数解包,仅在Python2中提供。它是lambda x:(-x[0], x[-1])的更Pythonic替代品。当负数乘以负值时,负号正如您所期望的那样起作用,即结果值是反映在“数字线”上的绝对值,从而否定原始值。解包采用传递给函数的列表的第一个和第二个值,并将负号应用于第一个。

答案 1 :(得分:0)

当你将lambda函数指定为key时,在这种情况下,作为list元素的元组将被发送到lambda函数。

key=lambda (h, t): (-h, t)

通常在lambda表达式中,我们从元组中选择一个vlue作为比较的关键,但是上面显示的代码只是否定元组中的第一个值,并将元组本身保留为键。