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

    # 迭代器
    """
    1.迭代器(Iterator)是访问集合内元素的一种方式,一般用来遍历数据
    2.迭代器和下标的访问方式不一样,迭代器是不能返回的,迭代器是提供一种惰性方式的数据方式
    实现__iter__方法即为可迭代类型(Iterable)
    3. __next__真正返回迭代值得逻辑
    """
    from collections.abc import Iterator, Iterable
    # 可迭代类型 Iterable
    print(isinstance([1,2], Iterable))  # True
    # 迭代器 Iterator
    print(isinstance([1, 2], Iterator)) # False
    
    # iter返回一个迭代器
    a = iter("str")
    print(isinstance(a, Iterator))  # True
    
    
    # 生成器
    """
    1. 生成器函数,函数里面有yield关键字
    2. python生成器/栈帧分配到堆内存,可控制整个函数的暂停/运行
    3. 生成器的对象,也属于 Iterator 可以使用for循环
    """
    def func():
        print("123")
        # yield 只是把值映射出去
        yield 1
        print(3)
    
    if __name__ == '__main__':
        f = func()  # <generator object func at 0x000002989998C040>
        for i in f:
            print(i)
    
        print(isinstance(f, Iterator))
    
    # 查看python编译后得字节码文件
    import dis
    print(dis.dis(func))
    
    
  • 相关阅读:
    CSS对 网页进行布局
    myeclipse配置tomcat服务器
    JDBC链接数据库
    java集合框架
    java日期操作
    二叉树的最近公共祖先
    二叉树的深度
    飞地的数量
    岛屿数量
    岛屿的最大面积
  • 原文地址:https://www.cnblogs.com/zy7y/p/14198505.html
Copyright © 2011-2022 走看看