Python之匿名函数

1、定义

  匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序。

2、基本语法

  lambda 参数:表达式(返回值) = def func(参数): 表达式(return 值)

3、应用示例

#例1:求列表中所有数的平方
lis1 = [1,2,3,4,5]

#用函数实现求平方
def getSquare(x):
    return x*x
for i in lis1:
    print(getSquare(i), end=' ')
#输出结果
1 4 9 16 25

#用lambda实现
f_lambda = lambda x:x*x
for i in lis1:
    print(f_lambda(i), end=' ')
#输出结果
1 4 9 16 25

4、在内置函数 max() 求最大值,min()求最小值, map() 映射, reduce 合并, filter() 过滤 中经常会用到lambda

示例(map):

#例1 用map把列表中所有的名称全部加上e补充完整,比如'hom->home'
strlis = ['her','hom','cak','peopl']
for i in map(lambda x:x+'e',strlis):
    print(i, end=' ')
#输出结果
here home cake people

#例2 求两个列表中对应元素进行相加后的和 如lis1[0]+lis2[0]
lis1 = [1,2,3,4]
lis2 = [4,5,6,7,9]
for i in map(lambda x,y:x+y, lis1,lis2):
    print(i, end=' ')
#输出结果
5 7 9 11
#注:map只以长度最小的迭代对象为基准  

示例(filter):

#例1 求列表中元素长度大于>2的元素
strlis = ['a','bb','ccc','dddd','eeeee']
for i in filter(lambda x:len(x)>2, strlis):
    print(i, end=' ')
#输出结果    
ccc dddd eeeee

#例2 求列表中所有value>=100的键值对
diclis = [ {'k':'b','v':98}, {'k':'c','v':99}, {'k':'d','v':100}, {'k':'e','v':101}]
for i in filter(lambda x:x['v']>=100, diclis):
    print(i, end=' ')
#输出结果
{'k': 'd', 'v': 100} {'k': 'e', 'v': 101}  

总结:

  1、匿名函数即没有绑定名字的函数,没有绑定名字,意味着只能用一次就会被回收。

  2、匿名函数的应用场景就是:某个功能只用一次就结束了。

posted @ 2018-02-08 22:28  lioushell  阅读(250)  评论(0编辑  收藏  举报