我不太理解sorted()参数背后的语法:
key=lambda variable: variable[0]
不是任意的吗?为什么变量声明两次在什么看起来像字典?
我不太理解sorted()参数背后的语法:
key=lambda variable: variable[0]
不是任意的吗?为什么变量声明两次在什么看起来像字典?
当前回答
另一个使用sorted()函数key=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)]
其他回答
lambda是一个Python关键字,用于生成匿名函数。
>>> (lambda x: x+2)(3)
5
左边的变量是一个参数名。右边变量的使用是利用了参数。
意思几乎完全相同:
def some_method(variable):
return variable[0]
另一个使用sorted()函数key=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)]
是一个匿名函数,不是任意函数。接受的参数将是您正在处理的变量,以及对其排序的列。
lambda和排序的另一种用法如下:
给定输入阵列:人= [[7 0],[4 4],[7,1],[5,0],[6,1],[5,2]]
线:people_sort =排序(人,关键=λx: (x - x[0],[1]))将people_sort列表[[7,0],[7,1],[6,1],[5,0],[5,2],[4 4]]
在本例中,key=lambda x:(-x[0], x[1])基本上告诉sorted首先根据每个实例的第一个元素的值对数组进行排序(按照减号所示的降序排列),然后在同一子组中,根据每个实例的第二个元素进行排序(按照默认选项的升序排列)。
希望这是对你有用的信息!