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. Python 开平方

    #!/user/bin/python3#files :using_sys.pyf = open("filename.txt","r+")num = f.read ...

  2. ActionListener的三种实现方法

    Swing是目前Java中不可缺少的窗口工具组,是用户建立图形化用户界面(GUI)程序的 强大工具.Java Swing组件自动产生各种事件来响应用户行为.如当用户点击按钮或选择菜单项目时,Swing ...

  3. java中一些定时器的使用

    一:简单说明 ScheduleExecutorService接口中有四个重要的方法,其中scheduleAtFixedRate和scheduleWithFixedDelay在实现定时程序时比较方便. ...

  4. 一些有意思的VR设备介绍

    1.计算机(Computers) 不久以前,一个VR系统需要百万美元的超级计算机:而如今顶级的VR系统正在使用桌面便携式计算机簇,极大的降低了价格和维护成本. 2.跟踪器(Tracking) 为了能与 ...

  5. 使用Visual Studio扩展插件Visual assist X给代码插入注释模板

    Visual Assist 是由Whole Tomato公司为Microsoft Visual Studio开发的一款插件.它对Visual Studio的智能提示功能和代码高亮功能进行了增强,同时还 ...

  6. MFC工程资源相对路径

    Project->Properties->Configuration Properties->Debuging->Working Directory改为$(ProjectDir ...

  7. C#利用微软库完成设备网络定位(经纬度-地址)

    public delegate void OnPositionChangedEventHandle(object sender, PositionChangedEventArgs e); public ...

  8. JDBC代码模板

    import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import org.ap ...

  9. 纪勇破解QQ号问题

    试题描述 来到了新学校,才相处不到一个月,jy就对oyjy一见钟情.于是向oyjy问QQ号.当然身为创(实)新(验)一班的同学,oyjy还是要考考jy.她给了纪勇一个加密后的QQ号,让纪勇解密,解密规 ...

  10. c++ 解包tar

    首先我们来看tar文件组成 tar中的数据都是以512字节为单位:tar由三部分组成 “头部+内容+尾部”,其中头部是512字节的头部结构,内容是存放一个文件内容的地方,最后尾部是一个512字节的全零 ...