zoukankan      html  css  js  c++  java
  • python基础十一之迭代器和生成器

      可迭代

      内置方法中含有__iter__的数据类型都是可迭代的,只要是可迭代的就可以使用for循环,反之亦然。

    print(dir(''))   # dir()函数可以获取当前数据类型的所有内置方法  返回值是list
    print('__iter__' in dir([]))  # 判断是否含有__iter__内置方法

      迭代器

      内置方法中含有__iter__和__next__的都是迭代器,所以迭代器一定是可迭代的

    # 一个可迭代的对象调用__iter__()之后会返回一个迭代器
    print(type([].__iter__()))   # <class 'list_iterator'>

      迭代器可以使用__next__()方法一个一个去获取值

    li = [1, 2, 3, 4, 5]
    iterator = li.__iter__()
    print(iterator.__next__())  # 1
    print(iterator.__next__())  # 2
    print(iterator.__next__())  # 3

      迭代器的好处:

        从容器内一一取值,可以取出全部内容

        节省内存空间:每次取值时才在内存中生成一个值

      迭代器和可迭代判断方法

    from collections import Iterator
    from collections import Iterable
    print(isinstance([], Iterator))  # Iterator 迭代器
    print(isinstance([], Iterable))  # Iterable 可迭代

      生成器

      生成器是含有yield关键字的迭代器。

    # 定义
    """
        def generator():
            函数体
            yield 返回值
    """

      调用生成器后返回的是一个生成器。

    def generator():
        print('生成器')
        yield 'zxc'
        return 'a'
    # 生成器中yield和return能同时存在,return在yield后面定义没有任何意义,
    # return在yield前面定义将无法执行yield,也就不在是生成器了
    ret = generator()
    print(type(ret))  # <class 'generator'>
  • 相关阅读:
    数据库的创建,数据的增删改查
    Ubuntu系统下查看显卡相关信息
    分布式文件系统测试方法与测试工具
    分布式存储产品的测试实践及心得
    sql注入
    web测试项目总结
    Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法
    Ubuntu系统下Jenkins的git构建基本方法
    Ubuntu系统下在github中新增库的方法
    ADO.NET复习总结(2)--连接池
  • 原文地址:https://www.cnblogs.com/zxc-Weblog/p/8179123.html
Copyright © 2011-2022 走看看