Python 的 map, filter, reduce 函数(转贴)

2011-09-27

参考文档:http://www.yuanma.org/data/2010/0310/article_4161.htm

map 函数 func 作用于给定序列的没个元素,并于一个列表来提供返回值.

map 函数 python 实现代码:

def map(func, seq):
    mapped_seq = []
    for eachItem in seq:
        mapped_seq.append(func(eachItem))
    return mapped_seq

filter 函数的功能相当于过滤器。

调用一个布尔函数 bool_func 来迭代遍历每个 seq 中的元素;返回一个使 bool_seq 返回值为 true 的元素的序列。

filter 函数 python 代码实现:

def filter(bool_func,seq): 
    filtered_seq = [] 
    for eachItem in seq: 
        if bool_func(eachItem): 
            filtered_seq.append(eachItem) 
    return filtered_seq

reduce 函数,func 为二元函数,将 func 作用于 seq 序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值。

reduce 函数 python 代码实现:

def reduce(bin_func,seq,initial=None): 
    lseq = list(seq) 
    if initial is None: 
        res = lseq.pop(0) 
    else: 
        res = initial 
    for eachItem in lseq: 
        res = bin_func(res,eachItem) 
    return res