zoukankan      html  css  js  c++  java
  • 可迭代对象,迭代器(生成器)区别

    python中有些概念非常容易弄混淆,比如可迭代对象和迭代器。

    什么是可迭代对象呢?

    最简单的定义就是:可以使用for...in...语句进行循环的对象,比如字符串、列表、元组、字典以及迭代器、生成器都是可迭代对象。

    可以使用isintance()来判断:

    >>> from collections import Iterable
    >>> isinstance({'dede':123},Iterable)
    True
    >>> isinstance('hello',Iterable)
    True
    >>> isinstance(123,Iterable)
    False
    >>> isinstance([1,3],Iterable)
    True

    而迭代器是可以使用next()进行回调的对象,可迭代对象和迭代器的联系是:可以对迭代对象使用iter()方法来生成迭代器。

    >>> a = iter([1,3,5])
    >>> next(a)
    1
    >>> next(a)
    3
    >>> next(a)
    5
    >>> next(a)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration

     或者根据列表生成式来创建生成器:

    >>> l = ( x * x for x in range(1,11))
    >>> l
    <generator object <genexpr> at 0x000000A8DF038938>
    

     

    总结:

    1.迭代器一定是迭代对象,迭代对象不一定是迭代器

    2.生成器一定是迭代器,迭代器不一定是生成器

    3.使用for...in...来遍历迭代对象是最常用的方式

  • 相关阅读:
    怎么看到数据库以前做过的日志?
    感觉很好的网站
    uview 滑动切换
    Flyweight享元(结构型模式)
    悟空,真的是空?
    Interpreter解释器(行为型模式)
    Proxy代理(结构型模式)
    [转]有一种爱叫索取
    Command命令(行为型模式)
    Composite组合(结构型模式)
  • 原文地址:https://www.cnblogs.com/leomei91/p/7356752.html
Copyright © 2011-2022 走看看