以下是整个功能:
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是一个创建匿名函数的构造函数。在此匿名函数h
和t
作为参数传递。当h
成为-h
时会发生什么?
答案 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作为比较的关键,但是上面显示的代码只是否定元组中的第一个值,并将元组本身保留为键。