filter, map, reduce都是python针对序列(包括tuple, str, list )的内置方法。
filter函数:对序列执行过滤操作
filter(function or None, sequence) -> list, tuple, or string
function函数是一个布尔函数,filter()函数调用这个函数一次作用于seq中的每一个元素,筛选出符合条件的元素,并返回filter可迭代对象。
示例:
def isOdd(x):
return x & 0x1 == 1
l1 = range(0, 11)
l2 = list(filter(isOdd, l1))
print(l2)
上面的例子用于过滤掉偶数值,保留序列l1中的奇数值,输出结果为[1,3,5,7,9].
map函数:根据函数对序列做映射
map(function, sequence[, sequence, ...]) -> list
map将传入的function函数依次作用到序列sequence的每个元素,并把结果作为新的list返回。
示例:
l1 = range(0, 11)
l2 = list(map(lambda x: x ** 2, l1))
print(l2)
上面的例子将列表l1中的元素逐个映射为其平方值,输出结果为[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100].
reduce函数:根据函数对序列做累积运算
reduce(function, sequence[]) -> value
function函数有两个参数,reduce函数依次从传入的sequence中取一个元素,和上一次调用function的结果作为参数再次调用function,直到运算完成返回最后的结果。
示例:
from functools import reduce
l1 = range(0, 101)
l2 = reduce(lambda x, y: x + y, l1)
print(l2)
reduce函数位于python内置的functools模块,上面的例子利用reduce函数对0-100求和,输出结果为5050.