匿名函数
匿名函数:lambda表达式,又称匿名函数,常用来表示内部仅包含1行表达式的函数。如果一个函数的函数体仅有1行表达式,则该函数就可以用lambda表达式来代替。
语法:name=lambda [list] : 表达式
def add(x, y):
return x + y
ret = add(1, 3)
print(ret)
# 匿名函数调用方式1
# bar = lambda x,y:x+y
# print(bar(2,5))
# 匿名函数调用方式2
print((lambda x,y:x+y)(4,5))
lambda表达式优势:
*对于单行函数,使用lambda表达式可以省去定义函数的过程,让代码更加简洁
*对于不需要多次复用的函数,使用lambda表达式可以在用完之后立即释放,提高程序执行得性能。
高阶函数
一个高阶函数应该具备下面至少一个特点:
*将一个或者多个函数作为形参
*返回一个函数作为其结果
1、filter函数
filter函数是一个对于可迭代对象的过滤器,过滤掉不符合条件的元素,返回的是一个迭代器,如果要转为列表,可以使用list()来转换。该函数接收两个参数,第一个为函数的引用或者None,第二个为可迭代对象,可迭代对象中的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到迭代器中。
例题: 返回列表中的偶数
def func(x):
# if x%2==0:
# return True
# else:
# return False
return x%2==0
res=filter(func,[15,12,6,3])
print(res,type(res))
# <filter object at 0x000002A272485B50> <class 'filter'>
print(list(res)) # [12,6]
结合匿名函数
res=filter((lambda x:x%2==0),[15,12,6,3])
print(list(res)) # [12,6]
2、map函数
接收一个函数和一个可迭代对象,map将函数依次作用在可迭代对象里的每个元素上,返回结果再封装成一个迭代器
例1:
def func(x):
return 1
res=map(func,[1,5,6,8])
print(res,type(res))
# <map object at 0x0000020A025D5B50> <class 'map'>
print(list(res)) # [1, 1, 1, 1]
例2:
def func(x):
return x*x
res=map(func,[1,5,6,8])
print(list(res)) # [1, 25, 36, 64]
结合匿名函数:
res=map(lambda x:x*x,[1,5,6,8])
print(list(res)) # [1, 25, 36, 64]
reduce函数
在python3中如果使用reduce需要先导入
from functools import reduce
reduce是依次根据传入的可迭代对象的每个元素,然后把每一次的结果跟下一个元素进行计算,是一个累积起来的过程。
from functools import reduce
def func(x,y):
return x+y
res=reduce(func,[1,2,3,4,5])
print(res,type(res)) # 15 <class 'int'>
res=reduce((lambda x,y:x+y),[1,2,3,4,5])
print(res) # 15
zip函数
接收0个、1个、多个可迭代对象为参数,将其合并成一个元组,返回一个可迭代的zip对象,可以使用list将返回的对象转换成列表,列表的长度是所有传入的可迭代对象中可迭代最短的个数
l1 = [1,2,3]
l2 = [4,5,6]
res=zip(l1,l2)
print(res,type(res))
# <zip object at 0x00000242F60F0A00> <class 'zip'>
print(list(res)) # [(1, 4), (2, 5), (3, 6)]
print(dict(list(zip(l1,l2)))) # {1: 4, 2: 5, 3: 6}
l1 = [1,2,3]
l2 = [4,5,]
print(list(zip(l1,l2))) # [(1,4),(2,5)]
额外无关知识点
print(any([True,False,False])) # True any相当于或
print(all([False,True,True])) # False all相当于且
sorted排序函数:
l=[1,2,3,4]
print(sorted(l,reverse=True)) # [4, 3, 2, 1]