从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的
摘要:在本文中,您将学习Python中的三个令人印象深刻的函数,即map(),filter和reduce()。
Python提供了许多预定义的内置函数,最终用户可以通过调用它们来使用它们。这些功能不仅简化了程序员的工作,而且创建了标准的编码环境。在本文中,您将学习Python中的三个令人印象深刻的函数,即map(),filter和reduce()。
在继续之前,让我们看一下内容:
- 什么是Python中的map,filter和reduce函数?
- 在以下范围内使用用户定义的函数和lambda函数:
- map()函数
- filter()函数
- reduce()函数
- 一起使用map(),filter()和reduce()函数
- map()中的filter()
- filter()中的map()
- map()和filter()中带有reduce()
因此,让我们开始吧。:)
什么是Python中的map(),filter()和reduce()函数?
如前所述,map(),filter()和reduce()是Python的内置函数。这些功能启用了Python的功能编程方面。在函数式编程中,传递的参数是决定输出的唯一因素。这些功能可以将任何其他功能用作参数,也可以提供给其他功能作为参数。现在让我们更深入地研究这些功能。
map()函数:
map()函数是一种高阶函数。如前所述,此函数将另一个函数与一个可迭代序列一起作为参数,并在将该函数应用于序列中存在的每个可迭代序列之后返回输出。其语法如下:
句法:
地图(函数,可迭代)
在此,函数定义了一个表达式,该表达式又应用于可迭代对象。map函数可以将用户定义的函数以及lambda函数作为参数。
在以下范围内使用用户定义的函数和Lambda函数:
map()中的用户定义函数:
map()函数可以将用户定义的函数作为参数。这些功能的参数由用户或程序员专门设置。例如:
例子:
def newfunc(a):
return a*a
x = map(newfunc, (1,2,3,4)) #x is the map object
print(x)
print(set(x))
输出:
<位于0x00000284B9AEADD8的地图对象>
{16, 1, 4, 9}
如您所见,x是一个地图对象。下一部分输出显示以newfunc()作为参数的map函数,然后将a * a应用于所有可迭代对象。结果,所有可迭代变量的值将自身相乘并返回。
注意:输出不是按可迭代的值的顺序,因为我使用过set()函数。您还可以使用list()或tuple()函数,例如:
例子:
def newfunc(a):
return a*a
x = map(newfunc, (1,2,3,4)) #x is the map object
print(x)
print(list(x))
输出:
<位于0x00000284B9AEA940的地图对象>
[1, 4, 9, 16]
您还可以传递多个参数列表。例如:
例子:
def func(a, b):
return a + b a = map(func, [2, 4, 5], [1,2,3])
print(a)
print(tuple(a))
输出:
<位于0x00000284B9BA1E80的地图对象>
(3, 6, 8)
现在让我们看看如何在map()函数中使用lambda函数。
map()中的Lambda函数:
Lambda函数是具有任何名称的函数。这些功能通常作为参数提供给其他功能。现在让我们尝试将lambda函数嵌入map()函数中。考虑以下示例:
例子:
tup= (5, 7, 22, 97, 54, 62, 77, 23, 73, 61)
newtuple = tuple(map(lambda x: x+3 , tup))
print(newtuple)
输出:
(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)
上面的输出是将lambda表达式(x + 3)应用于元组中存在的每个项目的结果。
filter()函数:
filter()函数用于创建由值组成的输出列表,该值针对该值返回true。它的语法如下:
句法:
过滤器(函数,可迭代)
就像map()一样,可以使用此函数,也可以将用户定义的函数以及lambda函数用作参数。
例子:
def func(x):
if x>=3:
return x
y = filter(func, (1,2,3,4))
print(y)
print(list(y))
输出:
<位于0x00000284B9BBCC50的过滤器对象>
[3, 4]
如您所见,y是过滤器对象,并且列表是条件(x> = 3)正确的值的列表。
在filter()中使用lambda:
用作参数的lambda函数实际上定义了要检查的条件。例如:
例子:
y = filter(lambda x: (x>=3), (1,2,3,4))
print(list(y))
输出:
[3,4]
上面的代码产生的输出与以前的函数相同。
reduce()函数:
顾名思义,reduce()函数将给定函数应用于可迭代对象并返回单个值。

该函数的语法如下:
句法:
减少(函数,可迭代)
此处的函数定义了需要将哪些表达式应用于可迭代对象。此功能需要从functools模块导入。例如:
例子:
from functools import reduce
reduce(lambda a,b: a+b,[23,21,45,98])
输出: 187
在上面的示例中,reduce函数连续添加列表中存在的每个可迭代对象,并返回单个输出。
Python中的map(),filter()和reduce()函数可以一起使用。
一起使用map(),filter()和reduce()函数:
执行此操作时,首先会解析内部函数,然后外部函数将对内部函数的输出进行操作。
让我们首先尝试将filter()函数作为参数传递给map()函数。
在map()中使用filter():
下面给出的代码首先检查条件(x> = 3)对于可迭代对象是否为真。然后,使用map()函数映射输出。
例子:
c = map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4)))
print(list(c))
输出: [6,8]
如果从给定的元组中滤除大于或等于3的整数,则结果为[3,4]。然后,如果使用(x + x)条件映射此条件,则将获得[6,8],即输出。
在filter()中使用map():
当您在filter()函数中使用map()函数时,可迭代对象首先由map函数进行操作,然后将filter()的条件应用于它们。
例子:
c = filter(lambda x: (x>=3),map(lambda x:x+x, (1,2,3,4))) #lambda x: (x>=3)
print(list(c))
输出: [ 4、6、8 ]
在reduce()中使用map()和filter():
内部函数的输出根据提供给reduce()函数的条件而减少。
例子:
d = reduce(lambda x,y: x+y,map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4))))
print(d)
输出: 14
输出是[6,8]的结果,它是内部map()和filter()函数的结果。
到此为止,我们已经结束了有关map(),filter()和Python中的reduce函数的文章的结尾。希望您已经清楚地了解了所有内容。确保尽可能多地练习并恢复经验。
本文分享自华为云社区《从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的》,原文作者:Yuchuan。
从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的的更多相关文章
- 【MySQL函数】MySQL 5.5从零开始学第六章
说明:本文总结自:<MySQL 5.5从零开始学>第六章 MySQL中的函数包括: 数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数和加密函数等. 函数: 表示对输入参数值 ...
- 如何从零开始学Python?会玩游戏就行,在玩的过程就能掌握编程
现在学习编程的人很多,尤其是python编程,都列入高考了,而且因为人工智能时代的到来,编程也将是一门越来越重要的技能. 但是怎么从零开始学python比较好呢?其实,你会玩游戏就行. 从零基础开始教 ...
- python之感知器-从零开始学深度学习
感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...
- 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘
百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...
- 从零开始学python
自从20世纪90年代初Python语言诞生至今,它已被广泛应用于系统管理任务的处理和Web编程.今天就来给大家看看学Python的五大优势吧! NO.1 全球三大主流编程语言之一 python是一种面 ...
- 从零开始学python之Python安装和环境配置
Python 3适用于Windows,Mac OS和大多数Linux操作系统.即使Python 2目前可用于许多其他操作系统,有部分系统Python 3还没有提供支持或者支持了但被它们在系统上删除了, ...
- (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】
上面我们介绍了Spring Boot 的默认资源映射,一般够用了,那我们如何自定义目录? 这些资源都是打包在jar包中的,然后实际应用中,我们还有很多资源是在管理系统中动态维护的,并不可能在程序包中, ...
- (13)处理静态资源(默认资源映射)【从零开始学Spring Boot】
Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通 ...
- 零基础学python,python视频教程
零基础学python,python视频教程 这是我收集到的互联网上的视频资源,所有内容均来自互联网.仅供学习使用. 目前我在也在学习过程中,会把学习过程中遇到问题以及解决问题的方式,总结到我的公众号[ ...
- python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度
一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...
随机推荐
- CF1877 Div2 A-E 题解
A 显然 \(n\) 个队的得分之和为 \(0\),因此答案为这 \(n-1\) 个数的和的相反数. 赛时代码 B 小贪心. 将所有人按 \(b\) 升序排序,\(b\) 相同时按 \(a\) 降序, ...
- NFT(数字藏品)热度没了?这玩意是机会还是泡沫?
感谢你阅读本文! 大家好,今天分享一下NFT(数字藏品)这个领域,虽然今天的NFT已经没有之前那么火热,不过市场上依旧还是有很多平台存在,有人离开,也有人不断进来,所以很有必要再分析一番. 需要注意的 ...
- Net 高级调试之三:类型元数据介绍(同步块表、类型句柄、方法描述符等)
一.简介 今天是<Net 高级调试>的第三篇文章,压力还是不小的.上一篇文章,我们浅浅的谈了谈 CLR 和 Windows 加载器是如何加载 Net 程序集的,如何找到程序的入口点的,有了 ...
- 题解 CF690C2
题目大意: 给你一棵树,求一下直径 题目分析: emm,怎么说吧,就是树的直径的裸板子. 可能有人不大理解,明明是图,你为什么要说是给定一棵树. 大家可以自行验证一下,满足如下两个性质的是否是一棵树: ...
- Weight Balanced Leafy Tree 学习笔记
前言: 在这里十分十分感谢 \(\text{lxl}\) 和王思齐发明和总结了 \(\text{WBLT}\). 因为网上关于 \(\text{WBLT}\) 的正确讲解(已除去那篇国家集训队论文,不 ...
- Mybatis和其他主流框架的整合使用
Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google ...
- go基础-接口
一.概述 接口是面向对象编程的重要概念,接口是对行为的抽象和概括,在主流面向对象语言Java.C++,接口和类之间有明确关系,称为"实现接口".这种关系一般会以"类派生图 ...
- docker构建打包java项目
docker构建打包java项目 简介 本项目用于 研究和实践 docker的工作流部署发布 查看github源码 技术栈 spring-web (RESTAPI 请求交互) redis (用于实验 ...
- 飞码LowCode前端技术之画布的设计
简介 本章节从精准定位.分层设计.异步组件.拖拽四个方面分析飞码画布设计. 一.精准定位设计 飞码画布是一个套件,可对外提供画布能力.精准定位有两种情况,一是目标组件无子组件,而是目标组件有子组件. ...
- 0x00.常用名词、文件下载、反弹shell
下载文章 方法一:下载谷歌插件fireshot,捕捉整个页面 方法二:使用js代码 f12进入控制台,粘贴如下代码 (function(){ $("#side").remove() ...