python当中map,reduce和filter函数用法和区别

在python当中,关于map,reduce和filter函数用法。

  1. map:对任何可迭代序列中的每一个元素应用对应的函数。python3中返回的是迭代器。
  2. reduce:将序列中所有的元素进行合并运算。在python3中,reduce函数放在了functools这个模块中,需要导入使用。
  3. 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))
View Code

  也可以使用匿名函数。

li = [2,23,4,6,1]
new_list = map(lambda x:x+1,li)
print(list(new_list))
View Code

 

二、reduce函数

  reduce函数规定了,一定要传递一个支持一个二元操作的函数。

  示例:

li = [2,23,4,6,1]
def run(x,y):
    return x+y

print(reduce(run,li))
# 36
View Code

  也可以使用匿名函数。

  示例:

li = [2,23,4,6,1]
new_li = reduce(lambda x,y:x+y,li)
print(new_li)
# 36
View Code

 

三、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))
View Code

  示例:

li = [2,23,4,6,1]
new_li = filter(lambda x:x<5,li)
print(list(new_li))
View Code

  最后总结以下:

    map函数用于处理序列中每一个元素;

    filter函数用于过滤序列中每一个元素;

    reduce函数用于做序列的合并操作。

 

posted on 2022-10-19 09:00  一先生94  阅读(92)  评论(0编辑  收藏  举报

导航