Python–生成器

学习生成器之前,首先需要认识列表生成式,直奔主题。

1、简单列表生成式示例:

看样子好像很NB的样子,其实它等价于:

其实还是有点NB的,毕竟代码少了,手动嘻嘻嘻!

2、削微高级点的列表生成式:

生成式生成的数据可以交给函数处理,进而得到预定规则的一组数据。

下面有请主角登场!!!!

生成器:在Python中,一边循环一边计算的机制,称为生成器:generator。

我们知道了,通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。

创建生成器的姿势:将生成式的”[]”换成”()”就ok了,是不是超级简单。。。

由上面的例子可见,打印的a已不是一个列表,而是a的内存地址。而且a可以通过for循环将其中的值取出。

就用一个小栗子完成生成式和生成器比较吧:

生成器特性:

1.生成器只能一个个的取数据2.生成器只有在调用时才会生成相应的数据3.生成器只记住当前位置的地址,之前的的内存地址都没了4.只有一个__next__()方法5.生成器不能根据索引位置取值

示例:了解斐波那契数列(下个数为前两个数的和)

使斐波那契数列变成一个生成器

使用yield后,可以使用__next__()方法,中断函数的执行,在中断之后可以执行其他的操作,然后还可以通过__next__()再进入例如:

能看到这,那你又又又又又又要学到了:抓异常、抓异常、抓异常。重要的事情说三遍!!!

生成器示例高级,实现并行:

END!!!

Original: https://www.cnblogs.com/sunnytomorrow/p/13081734.html
Author: NorthFeng
Title: Python–生成器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590723/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • sed语句用法

    sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要…

    数据库 2023年6月14日
    088
  • MySQL主从备库过滤参数分析和测试

    测试环境: GTID的主从复制,主库(9900)——》备库(9909),存在测试库表: 9900_db1库:t1、t2、t3、t4、t5表 9900_db2库:t6、t7、t8、t…

    数据库 2023年6月16日
    076
  • UniApp文件上传(SpringBoot+Minio)

    UniApp文件上传(SpringBoot+Minio) 一、Uni文件上传 (1)、文件上传的问题 UniApp文件上传文档 uni.uploadFile({ url: ‘htt…

    数据库 2023年6月6日
    093
  • MySQL学习(1)—MySQL概述

    什么是数据库 概述 数据库(Database)是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统DBMS(Da…

    数据库 2023年6月14日
    099
  • 17、是否可以继承 String 类

    String类是final类,不可以被继承。 posted @2020-12-22 15:50 卫盾 阅读(111 ) 评论() 编辑 Original: https://www….

    数据库 2023年6月6日
    0109
  • Cookie和Session的关系和区别

    4.请简述Cookie和Session的区别 4.1什么是Cookie HTTP是无状态协议,他不能以状态来区分和管理请求和响应。也就是说服务器但从网络连接上无从知道客户身份。所以…

    数据库 2023年6月14日
    092
  • NopCommerce学习:MSSQL 2005 排序规则导致中文编码错误

    这两天学习电子商务开源项目NopCommerce,她的确做的很好,在电子商务开源项目中应该算是很棒的. 官方站点: http://www.nopcommerce.com/ 中文社区…

    数据库 2023年6月11日
    091
  • 女同桌找我要表情包,还好我会Python,分分钟给她下载几十个G…

    emmm~ 起因呢,这昨晚女同桌跟我说电脑有点卡,喊我去宿舍给她装个新系统,装系统就装系统吧,结果又说新系统表情包都没保存~ 我当时就有点生气,真当我是万能的呢? 于是我直接就用P…

    数据库 2023年6月14日
    0106
  • ReentrantLock 公平锁源码 第2篇

    Reentrant 2 前两篇写完了后我自己研究了下,还有有很多疑惑和问题,这篇就继续以自问自答的方式写 如果没看过第1篇的可以先看看那个https://www.cnblogs.c…

    数据库 2023年6月16日
    080
  • Linux下安装MySQL问题及报错解决

    前言: 在Linux环境下,安装MySQL服务 环境: 虚拟机CentOS7———————&#8…

    数据库 2023年5月24日
    091
  • 23种设计模式之访问者模式(Visitor Pattern)

    文章目录 概述 访问者模式的优缺点 访问者模式的使用场景 访问者模式的结构和实现 * 模式结构 模式实现 总结 概述 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可…

    数据库 2023年6月6日
    093
  • Java学习-第一部分-第三阶段-第二节:反射

    反射 笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html) 一个需求引出反射 请看下面的问题 根据配置文件 re.pr…

    数据库 2023年6月11日
    076
  • 批量新建域用

    前几个章节我们讲到Windows Server 2016-图形化新建域用户(一),本章节我们简单讲解下如何通过命令批量创建域用户,以便高效完成日常工作中实际批量创建用户需求,内容涉…

    数据库 2023年6月14日
    085
  • Netty-NIO基础

    一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就…

    数据库 2023年6月16日
    082
  • 多线程

    多线程使用Callable实现多线程 多线程第三种创建方式 定义一个任务类,实现Callable接口,结合FutureTask完成 交给Thread处理,重写call方法 目标:学…

    数据库 2023年6月16日
    0100
  • mqtt长连接报错32000

    背景 项目需要使用mqtt协议建立长连接,我是客户端,需要连上服务端同学的提供的地址;客户端使用的是paho提供的客户端sdk,如下: org.eclipse.paho org.e…

    数据库 2023年6月11日
    0130
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球