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)