我使用sorted(list_of_tuples, key = lambda tup: tup[1])在互联网上找到的代码对元组列表进行了排序.我不明白lambda函数在这个命令中是如何工作的.lambda函数是否返回元组的第一个索引?为什么tup而不是tuple?表示tup之前的第一个是:什么?是传入的参数吗?Lambda函数是否评估了:它的右侧并返回它?
我在StackOverflow上找到了lambda函数的解释,其中人们以"非功能"的方式将Lambda函数写出来进行比较,但我并不真正理解哪些部分等同于哪些部分.
谢谢
a lambda是内联函数,所以你可以像这样纵向重写它:
def sortkey(tup):
return tup[1]
sorted(list_of_tuples, key=sortkey)
Run Code Online (Sandbox Code Playgroud)
现在你看到tup冒号之前是函数的参数,并tup[1]返回第二个元素(第一个存在tup[0])
这个lambda是keysort函数,意味着你要按照每个元素的第二个进行排序list_of_tuples.sorted()将每个元素传递给key函数,按所述函数的返回值进行排序
正如@kojiro所指出的,operator模块中存在一个内置函数,称为itemgetter.您将索引传递给该函数,并返回一个函数,该函数执行lambda所执行的操作
演示如何仅调用一次键的示例:
>>> def sortkey(x):
... print x
... return x
>>> inputlist = range(5)
>>> random.shuffle(inputlist)
>>> sorted(inputlist, key=sortkey)
0
3
4
2
1
[0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)