day12生成器
迭代器
__iter__() 获取迭代器
__next__() 下一个
生成器
本质就是迭代器
两种方式写生成器
1. 生成器函数
2. 生成器表达式
生成器函数
函数内部有yield. yield返回 -> return
yield可以把函数分段执行
生成器函数被调用的时候. 返回生成器
def func():
yield
g = func() —— 得到生成器
生成器的用法和迭代器基本一致
__next__() 开始执行生成器 . 执行到yield.
直到没有yield. 抛出StopIteration
# 最后的yield后的代码是可以执行的但是会报错. StopIteration
生成器函数里不要写return
send() 可以给上一个yield传值
send()不可以在第一个位置和最后一个位置出现
1. 省内存
2. 惰性机制, 不访问__next__() 就没有值.
3. 只能向前. 不能反复.
各种推导式(简单)
列表推导式 [结果 for循环 if判断]
字典推导式 {key: value for循环 if判断}
集合推导式 {key for循环 if判断}
没有元组推导式
生成器表达式(最难)——本质是迭代器. __next__()
(结果 for循环 if判断)
惰性机制, 不访问__next__() 就没有值.
只能向前. 不能反复.
g = (i for i in range(10))
# print(list(g)) # 把传递进来的数据转化成列表. 里面包含了for循环
# # list() => for=> __iter__() ==> __next__()
day12生成器的更多相关文章
- day12——生成器、推导式、简单内置函数
day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将 ...
- day12.生成器;wraps初识
生成器 在 Python 中,使用了 yield 的函数被称为生成器(generator). 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器. 在 ...
- python学习打卡 day12 生成器
本节主要内容 : 生成器 生成器函数 各种推导式 生成器表达式 一.生成器 什么是生成器.生成器的本质就是迭代器. 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实 ...
- day12 生成器和各种推导式
今天主要学习了 1.生成器 2.生成器函数 3.各种推导式(比较诡异,理解了很简单,不理解很难) 4.生成器表达式(重点) 一.生成器 def func(): print'我叫周润发' return ...
- python基础学习Day12 生成器、列表推导式、字典的表达式、字典键值对的互换、集合推导式
一.生成器 1.1 生成器:就是(python)自己用代码写的迭代器,生成器的本质就是迭代器. 1.2 生成器函数 def func1(x): x += print() yield x print() ...
- 记录我的 python 学习历程-Day12 生成器/推导式/内置函数Ⅰ
一.生成器 初识生成器 生成器的本质就是迭代器,在python社区中,大多数时候都把迭代器和生成器是做同一个概念. 唯一的不同就是: 迭代器都是Python给你提供的已经写好的工具或者通过数据转化得来 ...
- python基础 Day12
python Day12 生成器python社区,生成器与迭代器看成一种.生成器的本质就是迭代器. 区别:生成器是我们自己用python代码构建的数据结构.迭代器都是提供的,或者转化得来的. 获取生成 ...
- Python全栈--目录导航
这里更新以Python语言作为基础,想要成为全栈工程师需要掌握的技能... Python基础语法 day01 初识Python day02 while循环 运算符和编码 day03 字符串 day04 ...
- python学习之旅
python学习分类 python基础 +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...
随机推荐
- Java基础加强之反射
1.什么是反射? 反射其实就是动态的加载类,我们在写JDBC的时候加载驱动Class.forName("xxx")时就涉及到了反射. 反射机制是在运行状态中,对于任意一个类,都能够 ...
- C# HttpWebRequest请求超时解决办法
request.GetResponse();超时问题的解决,和HttpWebRequest多线程性能问题,请求超时的错误, 解决办法 1.将http的request的keepAlive设置为false ...
- flex使用学习
1.指定容器为flex布局 display:flex 行内元素也可以使用Flex布局. display: inline-flex; 注意,设为Flex布局以后,子元素的float.clear和vert ...
- PAT乙级1008
1008 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯A ...
- MapReduce -- 统计天气信息
示例 数据: -- :: 34c -- :: 36c -- :: 32c -- :: 37c -- :: 23c -- :: 45c -- :: 50c -- :: 33c -- :: 41c -- ...
- mysql/mariadb学习记录——创建删除数据库、表的基本命令
查看已有的数据库: mysql> show databases; +--------------------+ | Database | +--------------------+ | inf ...
- Linux学习笔记(第十章)
vim程序编辑器 vim特点: vim三种模式: 一般模式:打开文档就直接进入编辑模式 -可进行删除,复制等,无法直接编辑文档 编辑模式:按下[i,I,o,O,A,R,r]等字母才会进入编辑模式,按E ...
- 在Mac检查安装的.net core 版本
在 Termianl which dotnet #查看dotnetcore的runtime路径 dotnet #dotnet 命令行工具 -h 查看帮助 #常用命令 # --info Display ...
- Yii2 查询条件
Model::find() 字符串格式,例如:'status=1' 哈希格式,例如: ['status' => 1, 'type' => 2] 操作符格式,例如:['like', 'nam ...
- 大数据调错系列之:自己总结的myeclipse连接hadoop会出现的问题
在我们学习或者工作中开始hadoop程序的时候,往往会遇到一个问题,我们写好的程序需要打成包放在集群中运行,这无形中在浪费我们的时间,因为程序可以需要不断的调试,然后把最终程序放在集群中即可.为了解决 ...