python小记--lambda 装饰器 max(min)的key回调函数 sorted

lambda:
lambda 输入:输出
等价于:
def  myfunc(输入):
return 输出
配合map filter reduce #python3里reduce不再是内建函数,需要 from functools import reduce
map(lambda x:return_expression,list)//遍历
filter(lambda x:judge_expression,list)//过滤
reduce(lambda a,b:f(a,b),list[,list b])//降维

key回调函数:
max(list,key=None)
max(range(10),key=lambda x: x > 3)   #4
解释:key=(False,False,False,False,True,..
key中max值的第一项为4对应的True,所以返回4
max('za', 'bf', key=lambda x: x[0])   #za
解释:key=('z','b'),max(key)='z',对应za
说点有用的(使用key):
max([('tom',12),('tony',17)],key=lambda x:x[1])//这个可以看做是两条记录,函数返回年龄最大的那条记录

装饰器decoration @
1无参数装饰器
定义装饰器函数:
def decorationfunc(func):
...
return func
假设被装饰函数为:
def function([args]):
...
使用装饰器函数定义被装饰函数:
@decorationfunc
def function([args]):
...
从数学的角度来看,如果被装饰的函数是f(.),装饰函数是df(.)的话,这个过程相当于重新定义了f(.):f(.)=df(f(.)),多个装饰器同理。
装饰器df1,df2,装饰f:(df1 df2)(f(.))=df1(df2(f(.)))

来自百度:Python帮助文档中对sorted方法的讲解:
sorted(iterable[,cmp,[,key[,reverse=True]]])
作用:返回一个经过排序的列表。
第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list)。
可选的参数有三个,cmp、key和reverse。
1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。//这里的函数定义,可以自己定义,只要返回int值就可以(亲测)
2)key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
3)reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。
key参数的值应该是一个函数,这个函数接收一个参数并且返回一个用于比较的关键字。对复杂对象的比较通常是使用对象的切片作为关键字。例如:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) #按年龄排序
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值