我不太理解sorted()参数背后的语法:
key=lambda variable: variable[0]
不是任意的吗?为什么变量声明两次在什么看起来像字典?
我不太理解sorted()参数背后的语法:
key=lambda variable: variable[0]
不是任意的吗?为什么变量声明两次在什么看起来像字典?
当前回答
换句话说,键(可选的。一个用来决定顺序的函数。默认为None)在排序函数中期望一个函数,您使用lambda。
定义lambda时,指定要排序的对象属性,python内置的sorted函数将自动处理。
如果你想按多个属性排序,那么分配key = lambda x:(property1, property2)。
要指定order-by,将reverse= true作为第三个参数(可选。一个布尔值。False将升序排序,True将降序排序。默认为False)的排序函数。
其他回答
Key是一个函数,将在比较集合的项之前调用它来转换集合的项。传递给key的参数必须是可调用的。
lambda的使用创建了一个匿名函数(可调用)。在排序的情况下,可调用对象只接受一个参数。Python的lambda非常简单。它实际上只能做和返回一件事。
lambda的语法是:单词lambda后跟参数名列表,然后是一段代码。参数列表和代码块由冒号描述。这也类似于python中的其他结构,如while, for, if等。它们都是通常具有代码块的语句。Lambda只是带有代码块的语句的另一个实例。
我们可以比较使用lambda和使用def来创建函数。
adder_lambda = lambda parameter1,parameter2: parameter1+parameter2
def adder_regular(parameter1, parameter2): return parameter1+parameter2
只是给了我们一种不指定名称的方法。这使得它很适合用作函数的参数。
变量在这里使用了两次,因为冒号的左边是参数的名称,而在右边,它在代码块中用于计算一些东西。
是一个匿名函数,不是任意函数。接受的参数将是您正在处理的变量,以及对其排序的列。
因为lambda的用法是在sorted()的上下文中被问到的,所以也看一下这个https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions
左边的变量是一个参数名。右边变量的使用是利用了参数。
意思几乎完全相同:
def some_method(variable):
return variable[0]
换句话说,键(可选的。一个用来决定顺序的函数。默认为None)在排序函数中期望一个函数,您使用lambda。
定义lambda时,指定要排序的对象属性,python内置的sorted函数将自动处理。
如果你想按多个属性排序,那么分配key = lambda x:(property1, property2)。
要指定order-by,将reverse= true作为第三个参数(可选。一个布尔值。False将升序排序,True将降序排序。默认为False)的排序函数。