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'>
  • 相关阅读:
    软件工程实践总结作业
    软工实践 产品个人分析
    软工交接情况
    结队第二次作业——WordCount进阶需求
    团队展示(团队)
    软工第一次结对
    软工实践第二次作业
    selenium_04_课堂笔记
    selenium_05_课堂笔记
    selenium_06_课堂笔记
  • 原文地址:https://www.cnblogs.com/zxc-Weblog/p/8179123.html
Copyright © 2011-2022 走看看