我使用互联网上找到的代码中的sorted(list_of_tuples, key = lambda tup: tup[1])
对元组列表进行了排序。我不明白lambda函数在这个命令中是如何工作的。 lambda函数是否返回元组的第一个索引?为什么tup
代替tuple
? tup
之前的第一个:
表示什么?是传入的参数吗? Lambda函数是否评估:
的右侧并返回它?
我在StackOverflow上找到了lambda函数的解释,其中人们以“非功能”的方式将Lambda函数写出来进行比较,但我并不真正理解哪些部分等同于哪些部分。
由于
答案 0 :(得分:6)
lambda
是一个内联函数,所以你可以这样重写它:
def sortkey(tup):
return tup[1]
sorted(list_of_tuples, key=sortkey)
现在你看到冒号之前的tup
是函数的参数,tup[1]
返回第二个元素(首先是{ {1}})
这个lambda是sort函数的tup[0]
,这意味着你要按key
的每个元素的第二个进行排序。 list_of_tuples
将每个元素传递到sorted()
函数中,通过所述函数的返回值对进行排序
正如@kojiro所指出的,key
模块中存在一个内置函数,称为itemgetter
。您将索引传递给该函数,并返回一个执行lambda执行操作的函数
演示如何仅调用一次键的示例:
operator
答案 1 :(得分:1)
The docs解释一下:
可以使用
lambda
关键字创建小型匿名函数。此函数返回其两个参数的总和:lambda a, b: a+b
。 Lambda函数可以在需要函数对象的任何地方使用。它们在语法上限于单个表达式。从语义上讲,它们只是正常函数定义的语法糖。
所以,换句话说:
x = lambda AAAA: EEEE
几乎相当于
def x(AAAA):
return EEEE
其中AAAA
是参数,EEEE
是表达式。
为什么几乎相同?因为底层函数对象具有不同的名称:在def
情况下,它是x
,而在lambda
情况下,它是<lambda>
。