1、sort()方法的key参数
li = [[1, 7], [1, 5], [2, 4], [1, 1]]
li.sort()
print(li)
#[[1, 1], [1, 5], [1, 7], [2, 4]] 默认按照每个元素的第0维排序 再按照1维排序,升序
def fun(li): #返回列表的第二位数
return li[1]
#这时将函数fun传递给参数key 得出结果
li.sort(key=fun)
print(li)
# [[1, 1], [2, 4], [1, 5], [1, 7]]
也就是说,key的实际参数是一个函数,那么我们就想到了lambda匿名函数,也可以像上例一样是提前定义好的函数,并且函数的返回值是可以被sort直接排序的,然后sort按照这个返回值进行排序。
借助lambda匿名函数,可以写成
li.sort(key = lambda x: x[1])
#[[1, 1], [2, 4], [1, 5], [1, 7]]
2、lambda匿名函数
特点:
lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。
lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。
1、类似普通函数的用法:
"""普通函数"""
def test():
return "hello"
print(test)
#<function test at 0x0000013D936D7E50>
print(test())
#hello
"""lambda的朴素用法"""
ww = lambda :"hello"
print(ww)
#<function <lambda> at 0x0000013D936F8040>
print(ww())
#hello #这种把lambda赋值给一个变量的用法和直接def一个函数没有社么区别
"""lambda的巧妙用法"""
#一般就是作为处理函数类型的参数,例如上面的sort方法的key参数