lambda表达式
- 三目运算符是对if-else的简化,lambda表达式是对函数的简化
- lambda表达式没有函数名
- 处理仅用一两次的函数体,省去了定义函数的步骤
1 基本结构
关键字 参数 冒号 函数体
lambda (x,y···) : 功能实现代码
2 传统函数转成lambda表达式-实例
# 传统函数
# 定义函数
def demoA(x,y):
print(x+y)
# 调用函数
demoA(1,2)
#输出:3
# lambda表达式
variable = lambda x,y : x + y
variable(2,3)sha
# 输出:5
BIF就是Built-in Functions内置函数
3 BIF与lamble表达式的配合使用
3.1 filter()-过滤函数
- 对迭代对象进行筛选
- True---------------返回
- False -------------舍弃
3.1.1基础语法
filter(function or None, iterable) --> filter object
函数名 / None 迭代对象 返回filter 对象
3.1.2 filter()使用案例
# 过滤:True 返回 ,False 舍弃
list(filter(None,(True,False,1,0,()))) #()为False
# 输出:[True, 1]
3.1.3 lambda 与 filter()的混合使用用lambda把filter()的function参数替换了
①实例1,通过函数筛选奇数
# 实例1:筛选奇数(正常写法)
# 定义函数
def odd(x):
return x % 2 #偶数返回 0=False
# 定义序列
element = range(8)
# 通过filter()筛选元素
list(filter(odd,element))
# 输出:[1, 3, 5, 7]
# 把实例1 (filter()与lambda的混合模式)输出偶数
# 定义序列
element = range(10)
# lambda替换 function
list(filter(lambda x : (x+1) % 2,element))
# 输出:[0, 2, 4, 6, 8]
3.2 map() 映射函数
3.2.1
- map() 会根据提供的函数对指定序列做映射
- 第一个参数 function 以参数序列中的每一个元素调用 function 函数,并返回迭代器
3.2.2 基础语法
map(function, iterable, ...)
函数 一个或多个序列
3.2.3 实例 -求平方
# 传统函数
# 定义sq函数
def sq(x):
return x**2
# 定义element序列
element = range(6)
# map()方法
list(map(sq,element))
#输出:[0, 1, 4, 9, 16, 25]
# map()与lambda的混合使用
list(map(lambda x : x**2,element))
# 输出:[0, 1, 4, 9, 16, 25]