匿名函数&&常用内置函数(方法)

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))

 

posted @ 2019-11-15 21:53  躺云飘  阅读(209)  评论(0编辑  收藏  举报