【python基础】—函数式编程三个基本函数map()/filter()/reduce()

本文介绍了Python中的map(),filter(),reduce()这三个内置函数,分别用于数据转换、筛选和累积操作,通过实例演示了如何高效地使用这些函数提升编程效率。
摘要由CSDN通过智能技术生成


前言

map()、filter()、reduce()是python内置函数,它们提供了一种便捷的方式来处理可迭代对象中的元素,这些函数在许多编程任务中非常有用,包括数据转换,筛选和累积操作,熟练掌握这些函数的使用方式可以让python编程更加高效和简洁。
本文主要介绍三个基本函数:map()、filter()、reduce()的用法。


一、map()函数

  • map(function,iterable,…)

用于将一个函数应用到可迭代对象(如列表、元组等)的每个元素上,然后返回一个包含结果的新可迭代对象。

参数描述
function要应用于可迭代对象的函数。
iterable要进行映射操作的可迭代对象。

map()函数可以接受多个可迭代对象,但每个可迭代对象的元素必须一致,它将function应用于可迭代对象的对应元素,并返回一个迭代器,其中包含了所有映射后的结果。

举例1:将列表中的元素转为大写。

words=['abc','nju']
#list(map(upper,words)) #报错,更正
list(map(lambda word:word.upper(),words))
# 输出:
# ['ABC', 'NJU']

# string.upper()函数被应用到words列表的每个元素上,将它们转为大写形式。

举例2:将列表中的元素乘以2。

lst=[3,2,5,8,1]
list(map(lambda x:x*2,lst))

# 输出:
# [6, 4, 10, 16, 2]

举例3:将列表中的元素字符串类型转变为数值型。

lst=['12', '3.4', '567']
lst1=list(map(eval,lst))
print(lst1)

# 输出:
# [12, 3.4, 567]

二、filter()函数

  • filter(function,iterable,…)

用于筛选可迭代对象中满足指定条件的元素,然后返回一个包含筛选结果的可迭代对象。

参数描述
function用于筛选元素的函数。该函数返回True或False。
iterable要进行筛选操作的可迭代对象。

filter()函数将function应用于iterable中的每个元素,并保留那些使function返回True的元素,生成一个包含筛选结果的迭代器。

举例1:筛选出偶数。

lst=[3,2,5,8,1]
list(filter(lambda x:x%2==0,lst))

# 输出:
# [2, 8]

在上面这个例子中,lambda函数用于检查每个元素是否为偶数,然后filter()函数筛选出了所有满足条件的元素。

举例2:筛选出长度大于等于5的字符串。

words=['hello','sodagreen','world','tomorrow','you','will']
long_words=list(filter(lambda words:len(words)>=5,words))
print(long_words)

# 输出:
# ['hello', 'sodagreen', 'world', 'tomorrow']

三、reduce()函数

  • reduce(function, iterable[, initializer])

reduce()函数用于可迭代对象中的元素进行累积操作,从左到右依次应用指定的函数,将结果汇总为一个值,这在某些情况下非常有用,例如计算累积或查找最大/最小值。

参数描述
function用于累积操作的函数。该函数接受两个参数,并返回一个结果。
iterable要进行累积操作的可迭代对象。
initializer可选,累积的初始值。

reduce()函数 将一个 iterable(数据集合、链表、元组等)中的所有数据进行下列操作:用传给reduce中的函数function(有两个参数)先对集合中的第1、2个元素进行操作,得到的结果再与第三个数据 function函数运算,最后得到一个结果,如果提供了initializer,它将作为累积的初始值,否则iterable的第一个元素作为初始值。

举例1:计算列表中所有元素的和

from functools import reduce

lst=[1,2,3,4,5]
reduce(lambda x,y:x+y,lst)

# 输出:
# 15

举例2:计算列表中所有元素的累积乘积

from functools import reduce

lst=[1,2,3,4,5]
reduce(lambda x,y:x*y,lst)

# 输出:
# 120

举例3:查找列表中的最大值。

from functools import reduce

lst=[123,12,456,789]
reduce(lambda x,y:x if x>y else y,lst)

# 输出:
# 789

参考文档:
https://zhuanlan.zhihu.com/p/662737346

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值