reduce python3_更少循环?看看这3个Python函数

原标题:更少循环?看看这3个Python函数

全文共1146字,预计学习时长5分钟

761355af070c433b925037fbffb138cb.jpeg

图源:wired

诞生于1991年的Python,这几年突然火了。简历上有了Python,就业竞争力瞬间提升,甚至一些小学教材上都出现了Python内容。这种语言的热度超过了以往任何时候。

作为21世纪最流行的语言之一,Python当然有很多有趣的函数值得深入探索和研究。笔者今天就将从理论和实际两个方面,介绍其中三个函数。

这三个函数可不简单,它们可以帮助程序员们避免编写循环,有时循环的运行成本是很高的。此外,这些函数还有助于提高运行速度。

拿出笔小本本开始学习吧!

7d5e3260e5714c3c918f539241d52914.jpeg

map()

map() 函数的作用是将另一函数作为参数,与某种数组放在一起,旨在将函数(作为参数而导入的函数)应用于数组中的每一个项。其好处在于:

· 无需编写循环

· 2.比编写循环用时短

d50bc64b7d3a4e13a9720137f376d8cf.jpeg

图源:unsplash

来看看实际效果。笔者采用名为num_func()的函数,该函数以一个数字作为参数。将该数字平方并除以二,然后返回。

注:函数的操作是任意选择的,用户可以在函数中执行任何想进行的操作。

c7d38f2a877b45c49832f53352a4bfca.jpeg

现在声明一串要应用num_func()的数字数组。注:map() 本身将会返回一个map对象,因此需要将其转为为一个列:

42925c22f58e4632bcf06ef5533f938f.jpeg

大功告成!虽然不是多难的技术,但是尽可能避免循环总是好事。

7d5e3260e5714c3c918f539241d52914.jpeg

reduce()

reduce()则不同,必须从functools模块将其导入。该操作主要是将一个给定的函数应用于项目组,然后返回一个值。

最后一部分很关键——reduce()函数不会返回一个项目组,而是返回一个值。观察以下图表,以对此概念具体化。

bfa172c72df240b8b0c6c16fed152886.jpeg

在图表不完全清楚的情况下,呈现出以下逻辑:

1.5加10等于15

2.15加12等于27

3.27加18等于45

4.45加25等于70

70是返回的值。从实现代码开始,先从functools模块导入reduce函数,再声明一个返回两个数字之和的函数:

92c95615278c454eb22cb65c64f405bb.jpeg

现在,可以在代码中重新查看图表,并验证所有内容是否正常工作:

e7408d6555cf49f2881bbdbab078b2ef.jpeg

当然还有许多办法可以对列表中的项目进行汇总,这里只展示了函数工作原理中最简单的一些例子。

b52305d170e34a4fb7b23cd302a7e4ce.jpeg

图源:business.blogthinkbig.com

7d5e3260e5714c3c918f539241d52914.jpeg

filter()

这个函数也非常棒,它可以节省时间——包括编写和执行。顾名思义,这个函数的作用是只将满足特定条件的项保留在数组中。

与map()一样,预先声明函数,然后将其和迭代列表一起传递到 filter()。

来一个示例:现已提前声明了一个名为 more_than_15()的函数,即如果参数给定的项大于15,则返回True。

b5cb99343728494bae815966c75f95bd.jpeg

接下来,声明一个数字数组,并将其作为filter()函数中的第二个参数导入:

3fedc7a0660c48cab170c4a4ccccaca4.jpeg

正如所料,只有三个值满足给定条件。是不是看起来比循环好多了?

7ae601ad920f4f5eb8efdea9a920110e.jpeg

图源:unsplash

用好这三个函数,你的代码看起来会更好,循环数也会更少。熟能生巧,要多练习呀~

ed3bfc39061540d5b0591ff72a517490.jpeg

留言 点赞 关注

我们一起分享AI学习与发展的干货

如需转载,请后台留言,遵守转载规范返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java list compareto_Java,如何使用compareTo对Arraylist进行排序

我试图弄清楚如何使用可比较的方式对ArrayList进行排序,我的代码如下所示:public class playerComparsion{public static void main(String[] args){ArrayList list new ArrayList();Player p1 new Players(1,92,Zlatan);Player p2 new Players(2,92,Hazard);Pla…

java图片上传(mvc)

最近有开始学起了java,好久没写文章了,好久没来博客园了。最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的。后台接收用的是mvc。不墨迹了,直接上图。 先看目录结构。idea开发。 一、图片上传还是使用的这款jq插件。前端部署…

appengine_Google AppEngine:任务队列API

appengine任务队列 com.google.appengine.api.taskqueue 使用任务队列,用户可以发起一个请求,以使应用程序执行此请求之外的工作。 它们是进行后台工作的强大工具。 此外,您可以将工作组织成小的离散单元(任务)。 然后…

python的for语句条件_Python入门基础解答条件判断语句和循环语句的新手使用教程...

无论什么语言都不会缺少条件判断语句和循环语句。我们日常中也有条件判断和循环,条件判断(明天如果下雨就不出门,如果晴天就出门。);循环(上学朗读课文,老师说:把文章的第几段落读三…

java安全权限_java.security.SecurityPermission

public final class SecurityPermission此类用于安全权限。SecurityPermission 包含一个名称(也称为“目标名称”),但没有操作列表;可以使用,也可以不使用指定权限。目标名称就是安全配置参数的名称(见下表)。目前 SecurityPermission 对象可…

Android studio Error occurred during initialization of VM 问题解决

最近开发导入其他Android项目遇见的问题,如下图: 解决办法: 将org.gradle.jvmargs的值该为521(堆内存分配过高导致) 备忘,希望能帮助到大家转载于:https://www.cnblogs.com/yunfang/p/6857096.html

应用程序服务器迁移:从JBoss EE5到Wildfly EE7

几周前,我发布了一个有关从Java EE 5迁移到7的博客 。这主要是关于如何使用新的Java EE 7改进Java EE 5代码。 现在,在本文中,我将对应用程序服务器端的迁移路径进行一些研究。 如果您使用的是Java EE 5,则很有可能正在使用以下服…

滑动窗口限流 java_Spring Boot 的接口限流算法优缺点深度分析

点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复)下一篇:昨天分享资料不小心把百度网盘深处的秘密泄露了(已修复)转自: loubobooo原文&am…

php置顶文章,zblogphp调用置顶文章的教程

有客户建议,侧栏的热门推荐能不能调用置顶类型的文章,因为本站一直未置顶过文章,所以没考虑过这方面,但是既然有需要就得满足啊,是不?于是乎在网站查看教程,别说还真有一篇,信心博客…

通用网页调用本地应用程序方案(windows平台)

一、更新注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\receiveOutOfArg] "URL Protocol""D:\\LongHaibin\\Learn\\Net\\receiveOutOfArg\\receiveOutOfArg\\bin\\Debug\\receiveOutOfArg.exe" "applicationName" [HKEY_CLAS…

php7有没有使用jit,RegEx不适用于长模式PCRE的JIT编译器堆栈限制 – PHP7

PHP 7引入了PCRE的JIT编译器.它可以影响是否/如何在长输入上执行低效的正则表达式.Error 6 PREG_JIT_STACKLIMIT_ERROR重写正则表达式以提高效率,通常是通过删除无关的捕获组或更加小心量词.作为一种解决方法,您可以禁用JIT.所以你可以使用以下解决方案使其工作:in…

mips j指令_MIPS的基本实现

MIPS核心指令集:指令集概括为3个指令类:存储器访问指令类lw,sw等2. 算术逻辑指令类add,sub等3. 转移指令类beg,J等指令的共同性取指令,送PC值给Memory;根据指令内容读取寄存器内容;除…

腾讯管家去除桌面快捷小图标

找了大半天,原来腾讯管家也可以: 废话不多说,动手实践吧。。。。。 打开电脑管家——电脑诊所——桌面图标——【去掉快捷方式小箭头】 就这样轻松的实现了,赶快试试吧! 转载于:https://www.cnblogs.com/yjq520/p/6858…

apache shiro_Apache Shiro第3部分–密码学

apache shiro除了保护网页和管理访问权限外, Apache Shiro还执行基本的加密任务。 该框架能够: 加密和解密数据, 哈希数据, 生成随机数。 Shiro没有实现任何加密算法。 所有计算都委托给Java密码学扩展(JCE&#xf…

argparse模块_Argparse:一个具体案例教会你python命令行参数解析

问题描述:现有一个用于数据格式转换的py脚本(多转一),执行时通过命令行传入一系列的参数控制其具体运行方式,使满足以下要求:1. 必须传入需要处理的原始数据文件名2. 可以指定输入文件的格式,若没有指定则使用默认值&a…

Eclipse中src/main/resources配置文件启动问题

项目pom文件有做修改如下的时候,还没有进行mvn clean install 启动test项目中的appcontext会 可以手动清空 然后就可以了。 出现如下问题的原因是 配置文件默认输出到target/classes 下 项目启动默认也会找该目录下的配置文件 其实这里pom文件拷贝配置文件只是用于读…

仍然不安全:变成了Java 9功能的Java 6中的主要错误

sun.misc.Unsafe的未来将如何发展? 随着2015年即将结束,我们认为这将是对Java社区过去一年中最热门辩论之一进行尸检的好机会。 通过查看标题,您中的大多数人可能已经开始在口腔中产生酸味并在肠道中产生愤怒的感觉,但是如果您错…

camvid数据集使用方法_使用PyTorch处理CIFAR10数据集并显示

在训练图像分类的时候,我们通常会使用CIFAR10数据集,今天就先写一下如何展示数据集的图片及预处理。第一部分代码,展示原始图像:import numpy as npimport torch#导入内置cifarfrom torchvision.datasets import cifar#预处理模块…

类型之间的相互转换php,php学习之数据类型之间的转换介绍

复制代码 代码如下:/*数据类型之间相互转换* 一种是强制转换* setType(变量,类型); //int,integer,float,double等等。* 这个函数将原变量的类型改变,用var_dump();可以查看变量** 在赋值前使用(类型)的形式,不会改变原变量的类型* $a(int)"123abc";** $变…

rhel 8.2不识别unicode_基于tensorflow 实现端到端的OCR:二代身份证号识别

最近在研究OCR识别相关的东西,最终目标是能识别身份证上的所有中文汉字数字,不过本文先设定一个小目标,先识别定长为18的身份证号,当然本文的思路也是可以复用来识别定长的验证码识别的。本文实现思路主要来源于Xlvector的博客&am…