python当中map,reduce和filter函数用法和区别
在python当中,关于map,reduce和filter函数用法。
- map:对任何可迭代序列中的每一个元素应用对应的函数。python3中返回的是迭代器。
- reduce:将序列中所有的元素进行合并运算。在python3中,reduce函数放在了functools这个模块中,需要导入使用。
- filter:对序列中的元素进行判断筛选。python3中返回的是迭代器。
一、map函数
map(处理逻辑可以是函数也可以是lambda表达式,可迭代的序列).
示例:
def func(x): return x + 1 li = [2,23,4,6,1] new_li = map(func,li) print(list(new_li))
也可以使用匿名函数。
li = [2,23,4,6,1] new_list = map(lambda x:x+1,li) print(list(new_list))
二、reduce函数
reduce函数规定了,一定要传递一个支持一个二元操作的函数。
示例:
li = [2,23,4,6,1] def run(x,y): return x+y print(reduce(run,li)) # 36
也可以使用匿名函数。
示例:
li = [2,23,4,6,1] new_li = reduce(lambda x,y:x+y,li) print(new_li) # 36
三、filter函数
fileter函数在拿到一个序列的时候,会开始循环迭代这个序列中的每一个元素,对每一个元素都进行一次if判断,结果为True的加入到列表中,为False的,直接丢掉。
示例:
#过滤出小于5的元素 li = [2,23,4,6,1] def greater_than(x): if x <5: return True else: return False g = filter(greater_than,li) print(list(g))
示例:
li = [2,23,4,6,1] new_li = filter(lambda x:x<5,li) print(list(new_li))
最后总结以下:
map函数用于处理序列中每一个元素;
filter函数用于过滤序列中每一个元素;
reduce函数用于做序列的合并操作。