Python sorted 函数:Key参数,以及lambda 函数与常规写法区别
第一种方式:
ous = sorted ( ouFilter. ous, key= lambda ou: ou. path)
使用 lambda
函数作为排序的关键字,这是一个简洁、明了的方式。lambda
函数在 Python
中表示一个简 单的匿名函数,它没有自己的名字,因此在代码中不需要为它预留名字。在排序的上下文中,key 参数通 常用于指定一个函数,该函数应用在输入序列的每一个元素上,其返回值被排序函数使用
第二种方式:
def key ( ou) : return ou. path
ous = sorted ( ouFilter. ous, key= key)
这里定义了一个名为 key
的函数,然后将其作为参数传递给 sorted
函数。虽然这也是有效的,但它的可读 性稍差。在一般的编程实践中,如果一个函数被只使用一次,那么使用 lambda
函数会更简洁,也更具可 读性。如果 key
函数需要在多个地方反复使用,那么定义一个完整的函数是合理的。
Key 参数解释说明:
words = [ "banana" , "apple" , "cherry" , "date" ]
sorted_words = sorted ( words, key= len )
print ( sorted_words)
你会发现 在这里是不需要使用 len(x)
这样的格式,甚至连括号都不需要,因为 sorted
函数的 key
参数, 用于指定一个函数,该函数将被应用于每个元素,根据返回的结果进行排序。默认值为 None
,表示按 照元素的原始值进行排序。
Lambda 函数:
def add ( a, b) : return a+ b
print ( add( 2 , 3 ) ) add = lambda a, b: a + b
print ( add( 2 , 3 ) )
你会发现 : 好像 lambda
就是省略了一个函数名,省略了一个 return
的关键词单词,然后把 def
替换为 lambda
,再把函数的 ()
前后两个括号去掉,把两行代码改为一行~~~
Demo 示例:
list1 = [ 19 , 32 , 76 , 82 , 23 , 63 , 38 , 50 , 20 , 30 , 39 , 14 , 19 , 50 , 81 , 27 , 77 , 12 , 55 , 29 ]
a = sorted ( list1, key= lambda x: x% 2 == 0 )
print ( a)
如果上面的 lambda 函数 改为常规的写法 则是如下:
list1 = [ 19 , 32 , 76 , 82 , 23 , 63 , 38 , 50 , 20 , 30 , 39 , 14 , 19 , 50 , 81 , 27 , 77 , 12 , 55 , 29 ]
def demo ( x) : return x % 2 == 0
a = sorted ( list1, key= demo)
print ( a)