Python的Map、Reduce、Filter和lambda

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

>>> s = lambda x, y: x+y
>>> s(1, 2)
3
Map函数  

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。 

>>> map(lambda x: x*2, [1,2,3])
[2, 4, 6]

map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:

>>> map(str,[12, 3, 4, 5])
['12', '3', '4', '5']
Reduce函数  

reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
>>> reduce(lambda x, y:x + y, [1, 2, 3, 4])
10
>>> reduce(lambda x,y: x*10+y, map(int, '13579'))
13579

Filter函数 

Python内建的filter()函数用于过滤序列

和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True

还是False决定保留还是丢弃该元素。

>>> filter(lambda x: x%2==0, [1, 2, 3, 4, 5, 6])
[2, 4, 6]



猜你喜欢

转载自blog.csdn.net/qq_41805514/article/details/80325911