zoukankan      html  css  js  c++  java
  • 迭代器与生成器

    迭代器实际案例

    for循环

    凡是能够for循环的都是可迭代的

    凡是可迭代的一定是是迭代器,可以通过调用iter方法迭代器得到一个方法。

    迭代器不一定是可迭代的。

    字典,元祖,集合,列表都是可迭代的。

    数字和布尔值是不可迭代的,是可哈西数据类型。

    概念

    以将某个数据集内的数据“一个挨着一个的取出来”,就叫做迭代

    可以被迭代要满足的要求就叫做可迭代协议。可迭代协议的定义非常简单,就是内部实现了__iter__方法。

     升级

    from collections import Iterable

    l = [1, 2, 3, 4]
    t = (1, 2, 3, 4)
    d = {1: 2, 3: 4}
    s = {1, 2, 3, 4}

    print(isinstance(l, Iterable))
    print(isinstance(t, Iterable))
    print(isinstance(d, Iterable))
    print(isinstance(s, Iterable))



    2:
    初识生成器

    我们知道的迭代器有两种:一种是调用方法直接返回的,一种是可迭代对象通过执行iter方法得到的,迭代器有的好处是可以节省内存。

    如果在某些情况下,我们也需要节省内存, 就只能自己写。我们自己写的这个能实现迭代器功能的东西就叫生成器。



    Python中提供的生成器:

    1.
    生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果。yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行

    2.
    生成器表达式:类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表

    生成器Generator:

      本质:迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现)
    特点:惰性运算, 开发者自定义



    工厂生产衣服案例

    
    




  • 相关阅读:
    Lucene 4.x Spellcheck使用说明
    谈谈Lucene和Solr索引存目录
    Solr初始化源码分析-Solr初始化与启动
    Solr主从集群配置简要说明
    Solr Dataimporthandler 导入MySQL 内存溢出。
    CentOS 6.5部署安装Memcached
    Tomcat 长连接与短连接性能测试
    CentOS 6.5上MySQL安装部署与入门。
    oracle 高水位线详解
    解决客户端通过zookeeper连接到hbase时连接过多的问题
  • 原文地址:https://www.cnblogs.com/12121wdw/p/8184758.html
Copyright © 2011-2022 走看看