列表排序方法sort()的key参数取值,以及lambda匿名函数

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参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值