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()函数实现的

  • 相关阅读:
    自考新教材--p78
    自考新教材--p76_2
    自考新教材--p76_1
    自考新教材--p75
    自考新教材--p70
    自考新教材--p69
    以HTML5及其衍生技术为基础的B/S架构实时视频监控解决方案
    智能化安防视频监控行业发展是如何转变的?
    摄像头视频监控是如何与流媒体服务器云平台连接的?
    如何实现摄像头监控数据实时存储及传输?
  • 原文地址:https://www.cnblogs.com/canneddream/p/14201963.html
Copyright © 2011-2022 走看看