什么是Python中的map,reduce和filter?

系统 535 0

基本上,lambdas以及map,reduce和filter为python提供了函数式编程能力。让我们看看他们是什么。

  • map: map函数采用 iterable(list,tuple,set)并将函数应用于列表中的每个元素。让我们看一个例子来看看它是如何工作的。

任务1:给定一个整数列表,编写代码,以方的所有数s在列表中。

            
              def func (num ):
	“””
	对给定数字进行平方的函数
	“””
	return num * num
 
l = [1, 2, 3, 4, 5, 6] 
 
#map采用一个函数并应用于 
#列表中的每个元素
ans = list (map (func ,l ))
 
#[1,4,9,16,25,36]
print(ans)

            
          

上面的代码工作并执行我们想要实现的内容,但我们可以使用lambda函数以更简洁的方式编写它,而不是创建单独的函数。让我们稍微改变一下代码,使其更简洁。

            
              l = [1, 2, 3, 4, 5, 6] 
 
#[1,4,9,16,25,36]
ans = list (map (lambda x :x * x ,l ))
print(ans)


            
          

任务2:给定一个整数列表,编写一个代码来均数偶数,但将奇数数字排成一行。这里我们可以一起使用map和lambda,如下所示

            
              l = [1, 2, 3, 4, 5, 6]
ans = list(map(lambda x: x ** 2 if x % 2 == 0 else x ** 3, l))
print(ans)

            
          

这总结了地图的基本工作。我们来看看过滤器

  • filter:它的工作原理类似于map函数。顾名思义,它用于根据特定条件过滤元素。不同之处在于它从列表中的元素创建满足某些条件的新列表。让我们看看它如何与一个例子一起工作。这些参数类似于地图的参数。它需要一个谓词函数和一个可迭代函数。

任务3:给定一个整数列表,编写一个代码,仅从列表中分隔偶数。

            
              l = [1, 2, 3, 4, 5, 6]
 
#只保留满足谓词功能的列表元素
ans = list(filter(lambda x: x % 2 == 0, l))
 
# [2, 4, 6]
print(ans)

            
          
  • reduce:它继续在列表中应用函数,直到它返回单个值。让我们通过一个例子来看看reduce的工作

任务4:给定一个整数列表,编写一个代码,返回通过乘以列表中的元素获得的总值。

            
              from functools import reduce
 
l = [1, 2, 3, 4, 5, 6]   
ans = reduce(lambda x, y: x * y, l)
print(ans)


            
          

笔记:

map和 filter返回一个map对象,而 reduce返回一个值。
我们必须从functools导入reduce,但map和filter可直接在builtins中使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论