Python 这是什么意思:key=lambda x:x[1]?
我看到它用于排序,但这行代码的各个组件实际上意味着什么Python 这是什么意思:key=lambda x:x[1]?,python,python-2.7,Python,Python 2.7,我看到它用于排序,但这行代码的各个组件实际上意味着什么 key=lambda x: x[1] 什么是lambda,什么是x:,为什么[1]在x[1]中 示例 max(gs_clf.grid_scores_, key=lambda x: x[1]) sort(mylist, key=lambda x: x[1]) lambda有效地创建了一个内联函数。例如,您可以重写此示例: max(gs_clf.grid_scores_, key=lambda x: x[1]) 使用命名函数: def
key=lambda x: x[1]
什么是lambda
,什么是x:
,为什么[1]
在x[1]
中
示例
max(gs_clf.grid_scores_, key=lambda x: x[1])
sort(mylist, key=lambda x: x[1])
lambda
有效地创建了一个内联函数。例如,您可以重写此示例:
max(gs_clf.grid_scores_, key=lambda x: x[1])
使用命名函数:
def element_1(x):
return x[1]
max(gs_clf.grid_scores_, key=element_1)
在这种情况下,
max()
将返回该数组中第二个元素(x[1]
)大于所有其他元素第二个元素的元素。另一种措辞方式如函数调用所示:返回max元素,使用x[1]
作为键。lambda
表示。在这种情况下,此函数接受单个参数x
,并返回x[1]
(即x
中索引1处的项)
现在,sort(mylist,key=lambda x:x[1])
根据应用于列表中每个元素的key
值对mylist
进行排序。类似地,max(gs_clf.grid_scores,key=lambda x:x[1])
返回每个元素的gs_clf.grid_scores的最大值
我还应该指出,此特定函数已包含在其中一个库中:。具体来说,操作符.itemgetter(1)
相当于您的键
distances.sort(key=lambda x: x[1])
这就是函数。
这里x是列表,我们在其中添加了x[1]
,即列表的第二个元素到排序函数中。因此,我们基本上是将每个列表的第二个元素(即x[1])添加到排序函数中。
我希望您能理解这一点。从Python3.7()的参考中,关键是list.sort()和sorted()
的参数。第一个内置函数就地修改列表,而后者接受并返回iterable
关键参数可以定义为在比较和排序之前分别对list/iterable的每个元素调用的函数。在这种情况下,内联函数lambda x:x[1]
被定义为键参数的值。lambda函数接受输入x返回x[1],这是x的第二个元素
假定
mylist = [[7, 8], [1, 2, 3], [2, 5, 6]]
# list(map(lambda x: x[1], mylist)) returns [8, 2 ,5]
mylistSort = sorted(mylist, key = lambda x: x[1])
# will sort the nested list based on the result of the lambda function
你能猜出结果是什么吗?mylistSort是[8,2,5]的排序序列中的[1,2,3],[2,5,6],[7,8],[2,5,8]
示例中的max()
仅用于从排序函数的结果中获取最大值
我希望这篇文章能有所帮助。还有一个使用sorted()key=lambda函数的例子。让我们考虑你有一个元组列表。在每个元组中,您都有一个汽车的品牌、型号和重量,您希望按品牌、型号或重量对这个元组列表进行排序。你可以用lambda来做
cars = [('citroen', 'xsara', 1100), ('lincoln', 'navigator', 2000), ('bmw', 'x5', 1700)]
print(sorted(cars, key=lambda car: car[0]))
print(sorted(cars, key=lambda car: car[1]))
print(sorted(cars, key=lambda car: car[2]))
结果:
[('bmw', 'x5', 1700), ('citroen', 'xsara', 1100), ('lincoln', 'navigator', 2000)]
[('lincoln', 'navigator', 2000), ('bmw', 'x5', 1700), ('citroen', 'xsara', 1100)]
[('citroen', 'xsara', 1100), ('bmw', 'x5', 1700), ('lincoln', 'navigator', 2000)]
来自官方文件Ehi!这是我对大约1小时前提出的另一个问题的回答!:d x:x[1]的含义是什么?这意味着从x中选择第二项,即如果x=[1,2,3],那么x[1]=2。由于python使用零索引,x[0]=1,x[1]=2等等。x:x[1]?f(x)=x_1的含义是什么,其中x是数组,x_1是第一个元素,x在哪里被赋值?我的意思是,您根据lambda(内联函数)生成的列表中的键对“mylist”进行排序,但是,在传递到lambda之前,“x”的值分配在哪里?谢谢您的解释!这个答案对我的理解毫无帮助。
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2]) # sort by age
>>>>[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]