zoukankan      html  css  js  c++  java
  • python基础13-迭代器和生成器

    迭代器和生成器

    凡是可以使用for循环取值的都是可迭代的
    可迭代协议:
    内部含有__iter__方法的都是可迭代的
    迭代器协议
    内部含有__iter方法和__next__方法的都是迭代器
    什么是迭代器
    迭代器=iter(可迭代的).自带一个__next__方法
    优势:节省内存快
    特性:惰性运算
    常用的:列表字典元素字符串集合 ange文件句柄enumerate
    python 2和python3中的range区别
    python2x种range不管range多少,会生成一个列表,这个列表将用来存贮所有的值
    python3中,不管range多少,都不会实际的生成热呢一个值
    python3种,有yield from
    生成器函数:
    凡是带有yield的函数,就是一个生成器函数;
    生成器函数的调用不会触发代码的执行,而是会返回一个生成器;想要生成器函数执行,用next()
    记录当前所在的位置,等待
    如何从生成器中取值?
    1)next 随时都可以停止,最后一次会报错
    2)for循环,从头到尾遍历一次,不遇到break eturn不会停止
    3)list uple 数据类型的强制转换
    yield返回值的简便方法,如果本身就是循环一个可迭代的,且要把可迭代数据中的没一个元素都返回,可以用yield from
    使用send的时候,在生成器创造出来之后需要进行预激活,可以用装饰器实现.
    生成器用来解决内存问题和程序功能之间的解耦
    列表推导式:
    [i for i in rang(30) if i%3==0]
    生成器表达式
    (i for i in rang(30) if i%3==0)
    一个生成器只能取一次
    生成器在不找他要值得时候,不取值.
  • 相关阅读:
    LAMP 环境搭建
    环境搭建/安装部署
    Linux 系统安装(5分钟)
    Eclipse 配置
    wsdl生成的客户端
    Oracle 修改字符集
    jquery expand
    js中不常用的对象或方法
    js中面向对象的封装
    JavaScript点击li显示索引
  • 原文地址:https://www.cnblogs.com/yimiaoyikan/p/8988384.html
Copyright © 2011-2022 走看看