社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

一文带您理解Python的map/filter/reduce

新语数据故事汇 • 10 月前 • 290 次点击  

mapreducefilter 函数在Python中是高效优雅的函数,可以以简洁而高效的方式转换和操作数据。map函数允许您对可迭代对象中的每个元素应用同一个函数,从而生成一个新的可迭代对象。filter函数则允许您根据条件过滤可迭代对象中的元素,仅保留满足条件的元素。而reduce函数则用于将可迭代对象中的元素逐个结合起来,生成单个值。通过理解和灵活运用这些函数,您能够更加轻松地处理数据,提高编程效率和代码清晰度。

map 函数:多功能的变形器


map函数接收两个参数:

  • 计算函数

  • 可迭代对象

其目的是对可迭代对象(如列表)中的每个元素应用某种转换。映射函数将该函数应用于可迭代对象中的每个元素,并返回一个新的可迭代对象。

mylist = [1, 2, 3, 4]
def add100(n): return n + 100
newlist = list(map(add100, mylist))print(newlist)

上面是一个简单的函数 add100(n),它接收一个数字 n,并简单地返回 n+100add100 函数应用于 mylist 中的每一个元素:

  • add100(1) 返回 101

  • add100(2) 返回 102

  • add100(3) 返回 103

  • add100(4) 返回 104

因此,返回 [101, 102, 103, 104]

filter函数:选择器/过滤器

filter函数接收两个参数:

  • 判断函数

  • 可迭代对象

其目的是决定哪些可迭代对象中的元素保留,哪些丢弃。过滤函数不会对元素进行任何转换。

mylist = [1, 2, 3, 4, 5, 6, 7, 8]
def larger5(n): return n > 5
newlist = list(filter(larger5, mylist))print(newlist)

上面代码是一个函数 larger5(n),它接收一个数字 n,如果 n 大于5则返回True,否则返回False。

larger5 函数应用于 mylist 中的每一个元素:

  • larger5(1) -- larger5(5)返回 False

  • larger5(6) -- larger5(8) 返回 True

因此,1、2、3、4、5 返回 False 被丢弃,而只有 6、7、8 返回 True 被保留,最终返回 [6, 7, 8]

reduce函数:聚合器

reduce 函数接收两个参数:

  • 计算函数

  • 可迭代对象

这个函数的目的是以某种方式将所有元素压缩成一个值。最简单的例子是加法。

mylist = [1, 2, 3, 4, 5]
from functools import reduce
def add(a, b): return a + b
result = reduce(add, mylist)print(result)

上面代码是一个简单的函数 add(a, b),它简单地返回 a+b

这个函数被应用于每一对元素(累积地):

  • add(1, 2) 返回 3

  • add(3, 3) 返回 6

  • add(6, 4) 返回 10

  • add(10, 5) 返回 15

因此,最终得到 15。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/171945
 
290 次点击