• 迭代器


    像list, tuple, generator,set, str,dict , 列表生成式这种可以被for循环作用的对象被称为Iterable(可迭代对象)

    而在之前可以被next()函数调用并不断返回下一个值的对象被称为迭代器iterator。这两者有些不一样。

    使用iter()函数可以转换Iterable为iterator。

    可以定义一个函数,使用yield from 从一个Iterable对象获得一个iterator。

    #yield from/子迭代器,后面直接是可迭代对象。
    def yield_from_iter(iter_object):
        yield from iter_object
    

      

    iterator是一种惰性计算的对象,可以代表一种数据流,我们只能访问现在iterator所在的位置,而无法得知其之后的情况也无法记录之前的情况,一定条件下iterator甚至可以无限大,类比于数学中的递推公式,只能满足递推不可以满足随机跳跃访问,而Iterable可以认为是一个有限的序列,我们可以直接像访问数组那样直接访问其中的一些元素,具有全局的操作可能。

    那么久可以这样理解生成器,生成器generator其实就是一个迭代器,不断地通过next()或者在for循环中进行迭代来更新自己的值,但是不能像列表那样直接访问任意一个内部的值。

    可以通过iter()函数获得一个迭代器对象。

    python的for循环本质上就是通过不断调用next()函数实现的

    1 for x in [1, 2, 3, 4, 5]:
    2     pass

    实际上就完全等价于:

    1 it = iter([1, 2, 3, 4, 5])
    2 while True:
    3     try:
    4         x = next(it)
    5     except StopIteration:
    6         break

    可以类比c++中的iterator,输入输出流的iterator也类似于此。

  • 相关阅读:
    Spring基于注解整合Redis实现内容缓存
    配置Mybatis二级缓存为Redis来实现内容缓存
    Spring整合Redis
    Java连接redis
    机器学习之 KNN近邻算法(一)入门
    matplotlib 之 快速入门
    Pandas 之入门
    Hadoop 之 环形缓冲区原理
    numpy 之 rollaxis的理解
    python 之 遇到SyntaxError: Non-UTF-8 code starting with 'xb8' in file
  • 原文地址:https://www.cnblogs.com/zy1120192493/p/12865987.html
Copyright © 2020-2023  润新知