1、lambda函数
lambda表达式,通常是在需要一个函数,但又不想费神去命名一个函数时使用,也就是匿名函数
lambda表达的匿名函数内容应该是简单的,一行就可以搞定的,如果复杂,干脆就定义一个函数。
lambda就是用来定义一个匿名函数的,如果还要给其绑定一个名字,就会显得画蛇添足,通常是直接使用lambda函数
def square(x):
return x*x
print(square(5)) #25
print((lambda a,b:a*b)(5,5)) #25
value1=lambda a:a*a
print(value1(5)) #25
value1=lambda a,b:a*b
print(value1(5,5)) #25
lambda高级用法
print((lambda a,b : a+b)(5,5))
#元组、列表(5,10,20)
print( (lambda *args:sum(args)) (5,10,20) )
#字典
print( (lambda **args:sum(args.values())) (a=5,b=10,c=20) )
lambda函数还可以应用在闭包中
def get_y(a,b):
return lambda x:ax+b
y1=get_y(1,1)
2、 map
map(function,sequence) : 对sequence中的item依次执行function(item),将执行结果function(item)组成一个list返回
def add(x):
return x*2
number1=(1,2,3,4)
#将number1中的所有数据,一个个的调入add函数中
result=map(add,number1)
print(list(result))
result=map(lambda x:x*2,number1)
print(list(result))
map(function,sequence[,sequence,…]) -> list :入参是为函数和列表、元组、字符串,返回值为function(item)列表
3、 reduce
reduce(function,sequence,starting_value):对sequence中的item顺序迭代调用function,如果有starting——value,还可以作为初始值调用。function接收的参数个数只能为2,先把sequence中的第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后返回一个结果。
from functools import reduce
print(reduce(lambda x,y:x+y,range(101)))
5050
reduce(function,sequence[,initial]) -> value: 入参是为函数和列表/元组/字符串和初始值,返回值为数值。
4、 filter
filter(function,sequence): 对sequence中的item依次执行function(item),将执行结果为ture的item组成一个list/string/tuple(取决于sequence的类型)
fib=[0,1,1,2,3,5,8,13,21,34,55]
print(list(filter(lambda x:x%2 ==0 , fib)))
[0, 2, 8, 34]
filter(function or none ,sequence) -> list,tuple,or string: 入参为函数和列表/元组/字符串,返回值为item列表/元组/字符串。