lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
>>> s = lambda x, y: x+y >>> s(1, 2) 3Map函数
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]