【代码学习】PYTHON 生成器
一、生成器
一遍循环一遍计算的机制,称为生成器
二、生成器的特点:
1、节约内存
2、迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的
三、创建方法
1、把列表生成式的[]改为()
#列表
L = [x*2 for x in range(5)]
print L
#生成器
G = (x*2 for x in range(5))
print G
以上代码运行结果
[0, 2, 4, 6, 8]
<generator object <genexpr> at 0x0000000002E40AF8>
2、yield 生成
yield 自动终止返回结果。
循环从终止的地方向下进行
def creatNum():
print ("----start----")
i = 0
while i < 5:
temp = yield i
print(temp)
i+= 1
#创建一个生成器对象
a = creatNum()
#让对象开始执行,第一次从头开始执行,如果之前执行过,就从上一次停止的地方开始执行
next(a)
以上代码运行结果
----start----
>>> next(a)
None
1
>>> next(a)
None
2
>>> a.send("SQYY")
SQYY
3
>>> next(a)
None
4
>>>
四、补充:
send()
执行到yield时,gen函数作用暂时保存send发送过来的值
c.next()等价c.send(None)
【代码学习】PYTHON 生成器的更多相关文章
- 通过代码学习python之@property,@staticmethod,@classmethod
URL: https://www.the5fire.com/python-property-staticmethod-classmethod.html #coding=utf-8 class MyCl ...
- 编写高质量代码改善python程序91个建议学习01
编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...
- python生成器学习
python生成器学习: 案例分析一: def demo(): for i in range(4): yield i g=demo() g1=(i for i in g) #(i for i in d ...
- python学习-39 生成器总结
总结 1.语法上和函数类似:生成器函数和常规函数几乎是一样的.它们都是使用def语句进行定义,差别在于,生成器使用yield语句返回一个值,常规函数使用return语句返回一个值. 2.自动实现迭代器 ...
- D03——C语言基础学习PYTHON
C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...
- 国内某Python大神自创完整版,系统性学习Python
很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...
- 学习 Python,怎能不懂点PEP 呢?
或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大 ...
- 都2020年了,你还不知道怎么学习Python吗?
众所周知,Python应用广泛,涵盖后端开发.游戏开发.网络爬虫.网站开发.数据挖掘.科学运算.大数据分析.云计算.人工智能等领域,感觉像神一样的存在.Python这么火,那么从入门到精通学习Pyth ...
- 第4.2节 神秘而强大的Python生成器精讲
一. 生成器(generator)概念 生成器是一个特殊的迭代器,它保存的是算法,每次调用next()或send()就计算出下一个元素的值,直到计算出最后一个元素,没有更多的元素时,抛出StopIte ...
- Python学习--Python基础语法
第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...
随机推荐
- Learning to See in the Dark论文阅读笔记
这是一篇图像增强的论文,作者创建了一个数据集合,和以往的问题不同,作者的创建的see in the dark(SID)数据集合是在极其暗的光照下拍摄的,这个点可以作为一个很大的contribution ...
- 用户注册(php)login(非美化)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- s 贪心
区间问题: 区间选点问题 右端点排序,now标记点. 数轴上有N个闭区间[Ai, Bi].取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个). 输入 第1行:一个整数N(1 ...
- codis安装以及启动
https://blog.csdn.net/ygd266/article/details/78469654
- SpringCloud Netflix Feign
调用其它机器上的服务(远程调用)有2种技术:REST.RPC. REST 注入RestTempalte,服务提供者的url要写成RESTful风格,在url中传递参数. 如果参数很多,url会有一长串 ...
- exists和not exists关键字
表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 SELECT ID,NAME FROM A ...
- ASP.NET + MVC5 入门完整教程七 -—-- MVC基本工具(下)
https://blog.csdn.net/qq_21419015/article/details/80493633 Visual Stdio 的单元测试
- MySQL学习(十一)double write 介绍 (半原创)
复习 Innodb关键的特性 插入缓存 两次写 异步IO 刷新邻近页 自适应哈希索引 概述 double write 的主要的作用是保证写入数据库文件的可靠性.通俗地说就是一份数据写两个地方,当出现异 ...
- 牛客多校第三场F Planting Trees 单调栈
Planting Trees 题意 给出一个矩阵,求最大矩阵面积满足该矩阵中任2元素的绝对值之差小于等于M T<1000) (n<500)但是题目明示单组(n*3)可过 分析 又是矩阵问题 ...
- AAC MDCT
AAC采用MDCT进行时频变换. 在编码端,以block为单位取出N个sample,乘以合适的window function后再进行MDCT.N通常为2048,256. 每个输入到MDCT的sampl ...