Python之匿名函数

1、介绍

也叫 lambda 表达式

a.匿名函数的核心:一些简单的需要用函数去解决的问题,匿名函数的函数体只有一行

b.参数可以有多个,用逗号隔开

c.返回值和正常的函数一样可以是任意的数据类型

d.匿名函数不支持复杂的逻辑判断

e.一般跟其他函数搭配使用

普通函数与匿名函数的对比:

#普通函数
def add(a,b):
    return a + b
 
print(add(2,3))


#匿名函数
add = lambda a,b : a + b  # 相当与 return a+b
print add(2,3)
 
正确用法:
print((lambda a,b:a+b)(4,5))


2、匿名函数练习

li = list(range(10))
print(max(li, key=lambda x: li[li.index(x)]))
比较数大小
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':250
}

# 普通函数
def get_value(k):
    return salaries[k]

# print(max(salaries,key=get_value))
# print(min(salaries,key=get_value))

# 匿名函数
print(max(salaries,key=lambda x:salaries[x]))   # 取谁的工资最大
# 先  next salaries,得到 键名,定义匿名函数 key=lamdba x:salaries[x]
# lamdba x # x 是匿名函数需要的参数,由  salaries[x] 来提供,[x]里的 x 是前面得到的 键名,得到键值,通过键值来进行排序后,返回键名
取谁的工资最大
data = list(range(10))
print(list(map(lambda x: x*x, data)))
搭配map函数
str =['a','b','c','d']
def fun(s):
    if s != 'a':     # 过滤条件,如果不等于,返回值
        return s 
ret = filter(fun,str)  # 格式:filter(函数名,序列),遍历序列
print(list(ret))   #['b', 'c', 'd']  显示过滤结果,bcd 不等于 a
print(ret)   # <filter object at 0x0000000001044240> 即是过滤器对象,也是一个迭代器对象  

例2:
name_l=[{'name':'egon','age':18},
        {'name':'alex','age':1000},
        {'name':'yuanhao','age':2000}]

res=filter(lambda d:d['age']>100,name_l)
print(res)   # 返回 filter 对象
for i in res:   # 遍历对象
    print(i)
=====
{'age': 1000, 'name': 'alex'}
{'age': 2000, 'name': 'yuanhao'}
搭配filter函数


.

原文地址:https://www.cnblogs.com/tootooman/p/8991190.html