FreezeJ' Blog

Python map、filter、reduce函数

2020-09-28

map

map(func, *iterables) –> map object
map函数相当于把迭代对象的所有项都作为参数执行所给的函数,返回应用后的结果。

>>> iter = [1, 2, 3]  # 可迭代对象
>>> func = lambda x: x + 3  # 匿名函数:加3
>>> list(map(func, iter))  # 列表中的所有项都+3
[4, 5, 6]

filter

filter(function or None, iterable) –> filter object
filter函数相当于把迭代对象的所有项都作为参数执行所给的函数,去除返回结果为假的迭代项。

>>> iter = [1, 2, 3, 4, 5, 6, 7]  # 可迭代对象
>>> func = lambda x: x > 3, a  # 匿名函数:是否大于3
>>> list(map(func, iter))  # 只保留大于3的项
[4, 5, 6, 7]

reduce

reduce(function, sequence[, initial]) -> value
reduce通过对一个累加器和后续项应用函数来计算一个单个的值。
和其他两个函数不同,reduce在Python 3.0的functools模块中可用,而不是在内置作用域中可用。

>>> from functools import reduce
>>> iter = [1, 2, 3, 4, 5]  # 可迭代对象
>>> func = lambda x, y: x + y  # 匿名函数: 两数之和
>>> reduce(func, iter)  # 累加
15

>>> from functools import reduce
>>> iter = [1, 2, 3, 4, 5]  # 可迭代对象
>>> func = lambda x, y: x * y  # 匿名函数: 两数之积
>>> reduce(func, iter)  # 累乘
120

注意
在python2 map和filter返回的是一个结果列表,而在python3中,map和filter返回的是一个生成器iter对象,可以正常迭代输出,但是直接输出为一个对象类型

Tags: Python