Python中的Map, Filter和Reduce

来源:互联网 发布:国考 知乎 编辑:程序博客网 时间:2024/05/27 20:51

Map

Map会对一个输入列表中的所有元素做一个函数操作.

map(function_to_apply, input_list)

例子:

input_list = [1,2,3,4,5]doubled = list(map(lambda x: 2*x, input_list))

操作就是把一个列表中的所有元素乘以2, 相当于:

input_list = [1,2,3,4,5]doubled = []for i in input_list:    doubled.append(i*2)

这个可以被推导式所取代, 比如取代上面的代码使用:

input_list = [1,2,3,4,5]doubled = [i*2 for i in input_list]

Filter

filter用来过滤列表中的元素, 并且返回一个由所有符合要求的元素所构成的列表.
例子:

numbers = range(-10, 10)less_than_3 = filter(lambda x: x<0, numbers)

这个也可以被推导式所取代:

numbers = range(-10, 10)less_than_3 = [i for i in numbers if i<3]

Reduce

Reduce可以对一个列表进行一些计算, 并且返回一个结果. 比如计算一个整数列表的乘积. 如果不使用Reduce则会需要一个for循环来解决, 使用Reduce会方便很多.
例子:

numbers = [1,2,3,4,5,6]product = reduce((lambda x, y: x*y), numbers)

如果不适用reduce, 会需要一个for循环:

numbers = [1,2,3,4,5,6]product = 1for i in numbers:    product *= i