filter(function, iterable)map(function, iterable)reduce(function, sequence) filter将 function依次作用于iterable的每个元素,如果返回值为true, 保留元素,否则从iterable里面删除。function必须返回是一个bool类型的函数。例如:
def test(x): return (x > 3) filter(test, [1, 2, 3, 4, 5]) =====> [4, 5]
map将function作用于iterable每个元素,将对应输出结果保存为一个list。function具有返回值。
例如
def add(x): return (1 + x) map(test, [1, 2, 3, 4, 5]) =====> [2, 3, 4, 5, 6]
reduce先把iterable的前两个元素调用函数 function,再以返回值和第三个参数调用,依次执行下去
def add(x,y): return x+y reduce(add, range(1, 11)) 55
lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方:
>>> g = lambda x: x * 2 >>> g(3) 6 >>> (lambda x: x * 2)(3) 6
lambda表达式返回一个函数对象
例子:
func = lambda x,y:x+y
func相当于下面这个函数
def func(x,y): return x+y
注意def是语句而lambda是表达式
下面这种情况下就只能用lambda而不能用def
[(lambda x:x*x)(x) for x in range(1,11)]
map,reduce,filter中的function都可以用lambda表达式来生成!