map reduce filter python,
本文主要介绍python函数编程的三大法宝map、FILTER、REDUCE的分享。Python使用MAP在迭代对象的每一项上调用函数。使用筛选器来筛选项目;使用reduce将函数应用于成对的项目以运行结果。在这里,我们将详细介绍这三者。有需要的朋友可以参考一下。
00-1010一、mapmap进入内置Python函数的高级用法二。地图和列表III的推导公式。选择iterable对象中的元素:filter IV。合并iterable对象:中的元素reduce V .总结众所周知,Python 支持多种编程范式:过程公式(使用基本语句)、面向对象编程和函数式编程。
Python 也提供了其他函数式编程语言的工具:
此工具使用map调用迭代对象项目上的函数,使用filter过滤项目,并使用reduce对项目对执行函数以运行结果。
目录
在没有循环的情况下处理可迭代对象:地图
有时,我们需要对列表、集合、字典等迭代序列进行操作。即对它们中的每个元素值进行一些操作并收集结果。
例如,在数据库中选择一列进行加减,或者对一些特殊值求平方。
我们先来看一个例子:
测试=[1,2,3,4,5,6]
square=[]
对于测试:中的x
square . append(x x)
平方
[1, 4, 9, 16, 25, 36]
此时,您可以利用Python的map,它允许您在不使用循环的情况下显式地处理和转换所有项目。这项技术通常被称为映射。当您需要将转换函数应用于迭代并将其转换为新的迭代时,可以使用Map。
测试=[1,2,3,4,5,6]
定义广场(编号):
退货数量*数量
列表(地图(正方形,测试))
[1, 4, 9, 16, 25, 36]
如上所述,我们将传入一个自定义函数square()来更广泛地使用它,也就是说,将该函数应用于列表中的每个元素。
对map列表中的每个元素调用square函数,返回值被收集到一个新的列表中。
因为需要自定义一个平方函数,结合上一篇文章对lambda函数的简单介绍。我们可以用lambda直接生成这个匿名函数,也就是说,我们可以写这样的代码来实现同样的功能:
列表(映射((lambda x: x*x),测试))
[1, 4, 9, 16, 25, 36]
一、map
除了自定义函数,还可以在map中传入内置的Python函数。例如,如果您有一个字符串列表,您可以轻松地创建一个新列表来计算字符串列表的长度:
name=[山姆,德文,垂怜经]
列表(地图(len,
name))
[3, 4, 5]
>>>
map 高级用法
map 不单能实现 for 循环能实现的同样的方式,还有性能优势。map 的高级用法比如:在一个可序列类型中,map 会按照顺序,并行地从各个序列中逐项取出一组又一组参数,然后传入函数中:
>>> pow(2, 8)
能看到上述代码的结果,map 对传入的每个序列并行各自取一个值。
二、map 与列表推导式
map 调用其实与列表推导式相似。
>>> test = [1, 2, 3, 4, 5, 6]
但是 map 在一般情况下会比列表推导式运行更快,而且编写的代码也会更少。而且有一点很重要:通过使用圆括号而不是方括号来包围一个推导,能创建一个按需产生值的对象,减少了内存又减少了程序的响应时间。
三、选择可迭代对象中的元素:filter
map 函数是将 Python 函数式编程工具集中一个主要也相对明确的代表。而 filter 和 reduce 分别实现了基于一个测试函数选择可迭代对象的元素,以及向元素对 应用函数的功能。
下面来看一个调用 filter 挑出一个序列中大于零的元素:
>>> list(range(-10, 10))
filter 对于序列或可迭代对象中的元素,如果函数对该元素返回了 True 值,这个元素就会被加入到结果列表中。
与 map 一样,filter 也能用一个 for 循环来等效,但是 filter 是内置的、简明的,通常也运行得更快:
>>> result = []
同样的功能,我们也能用列表推导式来实现:
>>> [x for x in range(-10,10) if x > 0]
四、合并可迭代对象中的元素: reduce
Python的 reduce()
是一种函数,它在 Python 标准库中居住在一个名为 functools 的模块中:
from functools import reduce
通过 reduce 来计算一个列表中所有元素加起来的和:
>>> reduce((lambda x, y: x + y),[1,2,3,4,5])
reduce
会将当前的和列表中的下一个元素传入列出的 lambda 函数,在默认条件下,序列中的第一个元素初始化了起始值。
使用 reduce 的这种用法也与如下使用 for 循环实现了同样的功能:
>>> test = [1, 2, 3, 4, 5]
五、总结
map 包括将转换函数应用于可迭代对象以生成新的可迭代对象。新迭代中的项是通过对原始迭代中的每个项调用转换函数来生成的。
filter 包括将谓词或布尔值函数应用于迭代以生成新的可迭代。通过筛选原始可迭代中的任何项目,以使谓词函数返回 false 的任何项目生成的项目。
reduce 包括将 reduce 函数应用于迭代以产生单个累积值。
到此这篇关于Python 函数编编程的三大法宝map+filter+reduce分享的文章就介绍到这了,更多相关Python 法宝map+filter+reduce内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。