1、迭代器省内存

迭代器只允许往后读数据,不允许回读数据

迭代器不能跳着读文件,因为他是一点一点加载文件内容到内存的,读完了可以销毁或丢掉

2、生成一个迭代器

a = iter(["fd", "ss", "dd", "ff"])

3、迭代器方法:

python3.0以上:__next__(); python2.7:next()

a.__next__()   读取的是fd

a.__next__()   读取的是ss

a.__next__()   读取的是dd

a.__next__()   读取的是ff

a.__next__()   会提示错误,停止迭代

4、linux中的cat、more、less等方法都类似迭代器效果

5、迭代器的用途:

f = open(*****)

for line in f: //类似于2.7里面的xreadlines()

print(line)

//这种读的方式就是迭代的读取方式,所以这么读比较快速。

//比f.read() 和 f.readlines()效率高很多

6、生成器  generator

一个函数调用时返回一个迭代器,那这个函数就叫生成器,如果函数中包含yield语法,那这个函数就会变成生成器

6.1

def cash(amount):

while amount > 0:

amount -= 100

yield 100 //这个关键字此时在这里做了一个返回操作

print("我是一个生成器")

atm = cash(500)

print(atm.__next__())

print(atm.__next__())

print("随时跳出函数与循环") //就相当于异步操作

print(atm.__next__())

print(atm.__next__())

print(atm.__next__())

6.2

import time

def consumer(name):

print("%s 准备吃包子啦" % name)

while True:

baozi = yield //此时yield做为一个接收值的容器

print("包子[%s]来了,被[%s]吃了")

def producer(name):

c1 = consumer('A')

c2 = consumer('B')

c1.__next__() //为了打印第一句话“准备吃包子啦”

c2.__next__() //为了打印第一句话“准备吃包子啦”

print("老子开始做包子啦")

for i in range(10):

time.sleep(1)

print("做了2个包子")

c1.send(i)

c2.send(i)

producer("hehe")

python学习之迭代器与生成器的更多相关文章

  1. Python学习之迭代器和生成器

    那么首先什么是迭代器和生成器呢? 迭代器即迭代的工具,那么什么又是迭代呢?所谓迭代:迭代是一个重复的过程,每次重读即一次迭代,并且每次迭代的结果都是下一次迭代的初始值.例: l=[1,2,3] cou ...

  2. python学习-38迭代器和生成器

    迭代器和生成器 ---- 迭代器协议和for循环工作机制 1.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往 ...

  3. Python学习--07迭代器、生成器

    迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). Python里使用for...in来迭代. 常用可迭代对象有 ...

  4. python学习日记(迭代器、生成器)-乱七八糟

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...

  5. python学习 day13 迭代器,生成器,枚举对象

    一.复习 1.闭包:定义在函数内部的函数(被函数嵌套的函数) 2.装饰器:闭包的一个应用场景 -- 为一个函数添加新功能的工具 3.开放封闭原则:不能修改源代码,不能修改调用方式,但可以对外提供增加新 ...

  6. python 学习分享-迭代器与生成器篇

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后 ...

  7. Python学习之--迭代器、生成器

    迭代器 迭代器是访问集合元素的一种方式.从对象第一个元素开始访问,直到所有的元素被访问结束.迭代器只能往前,不能往后退.迭代器与普通Python对象的区别是迭代器有一个__next__()方法,每次调 ...

  8. Python学习笔记——迭代器和生成器

    1.手动遍历迭代器 使用next函数,并捕获StopIteration异常. def manual_iter(): with open('./test.py') as f: try: while Tr ...

  9. python学习10—迭代器、三元表达式与生成器

    python学习10—迭代器.三元表达式与生成器 1. 迭代器协议 定义:对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往 ...

随机推荐

  1. 自定义组件-支持PNG图片的多态GraphicButton

    按钮功能使用TButton也可以解决, 但是TButton是会获得焦点的, 很多时候我们要求按钮不获得焦点, 而Speedbutton又不支持PNG图片 所以按照TSpeedbutton的代码, 重新 ...

  2. PCB板的质量可接受性标准 IPC-A-600H 中文版下载

    对于电子行业的小伙伴来说,经常要找PCB板厂打板,总难免遇到跟板厂因PCB上的质量缺陷扯皮的时候,这是就要有一份公认PCB质量可接受性标准作为最终PCB产品的验收标准,即IPC-A-600标准规范. ...

  3. xcode8升级后问题总汇

    一.注释快捷键无法使用 command + / 快捷键无法使用,在终端执行以下命令,然后重启Xcode即可.   1 sudo /usr/libexec/xpccachectl 二.注释快捷键 Xco ...

  4. JMeter学习-033-JMeter BeanShell 脚本应用实例之参数变量修改

    BeanShell脚本是JMeter自动化测试过程中不可或缺的提升技能之一,BeanShell脚本编写类似于Java脚本.它可以获取.修改系统定义或用户定义的变量值,同时也可以进行一些相应的测试数据处 ...

  5. spark编写word count

    创建SparkContext对象的时候需要传递SparkConf对象,SparkConf至少需要包含spark.master和spark.app.name这两个参数,不然的话程序不能正常运行 obje ...

  6. 如果空间不够的话,iOS发生这样的错误

    2016-12-16 10:24:50.945 gpxj[2634:21323] Simulator user has requested new graphics quality: 10 2016- ...

  7. php 下载文件代码段

    /** * 下载 * @param [type] $url [description] * @param string $filename [description] * @return [type] ...

  8. Linux环境数据备份Python脚本

    #!/usr/bin/python#Filename:backupscript.pyimport osimport time # The files and directories to be bac ...

  9. Mac下搭建git

    一.在本地git库中添加用户名及邮箱 git config --global user.name "username" git config --global user.email ...

  10. 关于ES6的 模块功能 Module 中export import的用法和注意之处

    export default 的用法 export default命令用于指定模块的默认输出.显然,一个模块只能有一个默认输出,因此export deault命令只能使用一次.所以,import命令后 ...