zoukankan      html  css  js  c++  java
  • python——迭代器与可迭代对象

     

     

    一、可迭代对象

     

    1.  可以直接作用于 for 循环的对象统称为可迭代对象:Iterable

    2.  可直接作用于 for 循环的对象:

    一类是集合数据类型:list、tuple、dict、set、str等

    一类是 generator,包括生成器和带 yield 的 generator function

    3.  可以通过 isinstance()函数,判断是否为可迭代对象 Iterable

    >>> from collections.abc import Iterable
    >>> isinstance([],Iterable)#判断list
    True
    >>> isinstance({},Iterable)#判断dict
    True
    >>> isinstance('abc',Iterable)#判断str
    True
    >>> isinstance((x for x in range(10)),Iterable)#判断generator
    True
    >>> isinstance(100,Iterable)#判断数字
    False
    >>> isinstance((),Iterable)
    True
    

      

    二、迭代器

    1.  可以被 next()函数调用,并且不断返回下一个函数值的对象称为迭代器:Iterator

    2.  生成器 generator 都是迭代器,但是 list、tuple、dict、set、str等不是迭代器

    3.  可以通过 isinstance()函数判断一个对象是否为 Iterator 对象

    >>> from collections.abc import Iterator
    >>> isinstance([],Iterator)#判断list
    False
    >>> isinstance((),Iterator)#判断tuple
    False
    >>> isinstance((x for x in range(10)),Iterator)#判断generator
    True
    >>> isinstance('abc',Iterator)#判断str
    False
    

      

    4.  把list、tuple、dict、set、str等可迭代对象Iterable变成Iterator,可以用 iter()函数

    >>> isinstance(iter([]),Iterator)
    True
    >>> isinstance(iter({}),Iterator)
    True
    

    Iterable可以通过 iter()函数得到一个 Iterator对象  

    5.  Python的 Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出 StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。

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

  • 相关阅读:
    C#中的int、long、float、double等类型都占多少个字节的内存
    Bit 存储操作代码碎片
    unity文件写入与读取
    unity调用系统剪切板功能
    LayerMask小结
    NGUI中获取鼠标在控件内部坐标
    【Unity技巧】Unity中的优化技术
    工程源码目录
    Unity3D_NGUI_性能优化实践_CPU卡顿
    Unity3d:UI面板管理整合进ToLua
  • 原文地址:https://www.cnblogs.com/canneddream/p/14201963.html
Copyright © 2011-2022 走看看