匿名函数&&常用内置函数(方法)
1.匿名函数
定义:没有名字的函数,名称空间使用一次就释放 ,一般匿名函数都要配合其它函数去使用,单独使用没有意义
lambda x,y:x+y 冒号前面是参数,后面是返回值
等价于====》
def func(x,y): return x+y
匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字 #让其有名字就没有意义
匿名函数与有名函数区别:
#有名函数与匿名函数的对比 有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能 匿名函数:一次性使用,随时随时定义 应用:max,min,sorted,map,reduce,filter
2.内置函数(方法)
1.max原理 与lambda结合使用 字典示例
max(args,key=#)
# 这里的key不是字典里的key 是max按照什么来比较
#列表:默认按索引取出所有的值作比较,字典:默认取出所有的key作比较
salary = {'egon':3000,'alex':10000,'jason':2900}
print(max(salary)) # jason
print(max(salary,key = lambda k:salary[k] )) #alex
key 用来定义比较规则,比较输出结果还是原来的字典key
原理分析:
1.按照key lambda的返回值排序,字典的k会传给lambda作为参数
2.比较完成后会输出数字最大的字典的key
2. min
3.zip 压缩,又称拉链函数
l1 = 'hello' l2 = [1,2,3] l3 = zip(l1,l2) print(list(l3)) #[('h', 1), ('e', 2), ('l', 3)]
4.sorted 排序
print(sorted(salary,key=lambda k:salary[k],reverse=True))
5. map 把列表中的字符串映射成新的值
names = ['egon','wu','alex'] g = map(lambda name:'%s_sb'%name,names) print(list(g)) #['egon_sb', 'wu_sb', 'alex_sb']
6.filter 过滤 过滤以sb结尾的名字
names = ['egon', 'wu_sb', 'alex_sb'] g = filter(lambda x:x.endswith('sb'),names) print(list(g))
7.reduce 累加 1-100累加
from functools import reduce print(reduce(lambda x,y:x+y,range(1,101)))
8.其它常用
#掌握: #divmod print(divmod(10001,125)) #商余 用于分页 #enumerate l = ['a','b','c'] # enumerate(l) 生成可迭代对象((0, 'a') (1, 'b') (2, 'c')) for index,value in enumerate(l): print(index,value) #eval 字符串中的对象提取出来 并执行一下 eval('print("xxx")') #reversed 反转 print(list(reversed(l))) #chr 将数字转成ascii码表中对应的字母 print(chr(100))