python中lambda、yield、map、filter、reduce的使用
1、 匿名函数lambda
python中允许使用lambda关键字定义一个匿名函数。所谓的匿名函数就是说使用一次或者几次之后就不再需要的函数,属于“一次性”函数。
#例1:求两数之和 f = lambda x, y: x + y print(f(5, 1)) #例2:求平方和 print((lambda x, y: x**2 + y**2) (3, 4))
#执行结果
6
25
2、关键字 yield
yield可以将函数执行的中间结果返回但是不结束程序。
yield关键字可以把一个函数变成一个生成器(generator)。
#实现一个range函数。
>>> def fun(x): ... i = 0 ... while i<x: ... yield i ... i+=1 ... >>> for i in fun(7): ... print(i) ... 0 1 2 3 4 5 6
#斐波那契数列实现 >>> def fab(x): ... a, b, n = 0, 1, 0 ... while n<x: ... a, b = b, a+b ... yield b ... n += 1 ... >>> for i in fab(10): ... print(i) ... 1 2 3 5 8 13 21 34 55 89
3、遍历函数(map)
map函数用于遍历序列。
>>> def func(a, b): ... return a+b ... >>> li = [1,2,3,4] >>> def func(a): ... return a+100 ... >>> print(list(map(func, li))) [101, 102, 103, 104]
>>> li = [1,2,3,4] >>> print(list(map(lambda x: x**2, li))) [1, 4, 9, 16]
>>> li = [1,2,3,4] >>> lo = [5,6,7,8] >>> print(list(map(lambda x, y: x**2 + y**2, li, lo))) [26, 40, 58, 80]
>>> li = [1,2,3,4,5,6,7,8,9] >>> print(list(map(lambda x: x > 5, li))) [False, False, False, False, False, True, True, True, True]
4、筛选函数(filter)
筛选函数用于对序列中的元素进行筛选,最终获取符合条件的序列。
>>> li = [1,2,3,4,5,6,7,8,9] >>> print(list(filter(lambda x: x>5, li))) [6, 7, 8, 9]
5、累计函数(reduce)
对序列中的所有函数进行类操作。
>>> from functools import reduce >>> li = [1,2,3,4,5] >>> reduce(lambda a, b: a+b, li) 15
#第三个参数为初始值,在此值之上进行累计 >>> reduce(lambda a, b: a+b, li, 100) 115 >>>