lambda
创建一个匿名函数
>>> f = lambda a, b, c: a * b + c
>>> f(3,4,5)
17
匿名函数,函数内只能有一个表达式,不用写return,返回值就是该表达式的结果。a,b,c是接收的参数,a*b+c就是函数的返回结果。
filter
>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> output_list = filter(lambda x: x > 5, my_list)
>>>> output_list
[6, 7, 8, 9]
返回my_list中符合过滤规则lambda x: x > 5
的子集。
map
>>> my_list = [1, 5, 7, 8, 11]
>>> output_list = map(lambda x: x * x, my_list)
>>> output_list
[1, 25, 49, 64, 121]
将函数作用到my_list的每个元素。
>>> new_list = [-4, 3, 2, -6, 5]
>>> map(lambda x, y: x + y, my_list, new_list)
[-3, 8, 9, 2, 16]
可以接收多个list,2个以上的以此类推
reduce
>>> reduce(lambda a, b: a * b, my_list)
用给定的函数lambda a, b: a * b
迭代处理my_list参数,得到一个值。
def func(x, y):
print (x, y)
return x + y
my_list = [1,2,3]
print 'result = %s' % reduce(func, [1,2,3])
(1, 2)
(3, 3)
result = 6
初始使用my_list中的前两个元素计算: 1+2,得到结果3
再使用上一部的结果3和下一个元素3再计算:3+3,得到结果6
def func(x, y):
print (x, y)
return x + y
my_list = [1,2,3]
print 'result = %s' % reduce(func, [1,2,3], 10)
(10, 1)
(11, 2)
(13, 3)
result = 16
也可以指定初始迭代值,如果有这个参数,那么第一个的计算就是10+1。