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

基本上,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中使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值