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__方法,不需要我们去实现)
    特点:惰性运算, 开发者自定义



    工厂生产衣服案例

    
    




  • 相关阅读:
    JAVA设计模式-设计原则
    java 8 stream特性
    使用跟踪标记查看过滤统计信息是否被使用
    找到SQL Server的序列号
    使用SSIS进行数据清洗
    找到SQL Server数据库历史增长信息
    如何查看某个查询用了多少TempDB空间
    SQL Server 2014云特性:无缝集成公有云
    SQL Server 2014新特性-原生备份加密
    强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • 原文地址:https://www.cnblogs.com/12121wdw/p/8184758.html
Copyright © 2011-2022 走看看