当前位置: 首页 > news >正文

17.生成器和推导式 - 教程

目录

1. 生成器

1.1 生成器函数

1.2 生成器表达式

2. 推导式

3. 集合推导式

4. 字典推导式

5. 协程


很多时候手写迭代器类太啰嗦,而生成器则可以帮我们更好解决这一障碍,使用生成器表达式能够允许我们在一个语句中重写循环整个逻辑,后面要学的列表推导式就是基于此。

import time
sleepy = ['no pause', time.sleep(1), time.sleep(2)]
print(sleepy[0])

集合字面量是贪婪的,会计算所有元素。即表达式time.sleep会执行2次。中间会sleep暂停。

如果数据量特别大或者表达式计算专门艰难,集合就可能会成为性能瓶颈。最好的方法就是使用生成器或生成器表达式。

生成器功能是建立在迭代器的原则上的,这个原则就是惰性求值。

惰性求值是的无限迭代器成为可能,这样可能按需供应值,且值不会耗尽。


1. 生成器

生成器(generator)就是迭代器(iterator),而且是一种“自带挂起/恢复能力”的特化迭代器。
用一句话概括:

生成器 ≈ 迭代器 + 状态保存 + 惰性生产

生成器有两种形态。


http://www.gsyq.cn/news/8873.html

相关文章:

  • 《建筑的永恒之道》第 27 章:道之核心
  • Linux命令大全(档案管理)
  • 详细介绍:java中常见的几种排序算法
  • Linux 内核整体架构详解
  • Ubuntu 磁盘扩容与扩容失败障碍解决( df -h 与 GParted 显示空间不一致的问题 -LVM)
  • httplb 服务器
  • atoi() - 字符串( ASCLL )转换为整数( int )
  • 02.Python:Flash初步使用
  • 从高版本的sqlserver向低版本的sqlserver上复制表和数据的方法
  • 【php】带数组的文件列表生成,返回数组
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程
  • 通过代码认识 CNN:用 PyTorch 构建卷积神经网络识别手写数字
  • 安全技术深度探讨:从鱿鱼皮肤到AI漏洞挖掘
  • 安装WSL
  • 数据建模流程分析
  • Django HttpRequest 对象的常用属性 - 指南
  • 完整教程:Ajax-day2(图书管理)-弹框显示和隐藏
  • civil 3d com api 帮助文档
  • 完整教程:【教程4>第8章>第28节】OFDM完整通信链路项目FPGA开发22——提取导频
  • 实用指南:万字详解架构设计:业务架构、应用架构、数据架构、技术架构、单体、分布式、微服务都是什么?
  • ArcEngine10.2中融合工具Dissolve的bug
  • 含“华”量超高的奥迪,卖爆了
  • 在Ubuntu系统中使用gcc和Makefile编译C程序
  • 9.20 闲话
  • IDEA 自动编译和热部署
  • RabbitMQ核心模型简介,Hello World的生产与消费
  • Linux 基础命令 02
  • Proxy 库解析(三)
  • 软工个人项目 - Helen
  • 概率论第二章部分习题