美文网首页Python基础
Python中Iterator和Iterable的区别

Python中Iterator和Iterable的区别

作者: 极客与宽客 | 来源:发表于2019-04-01 18:02 被阅读6次

    python中list, str,truple,  dict都是可以被迭代的,但他们不是迭代器。why?

    list/truple/map/dict这些数据的大小是确定的,我们可以准确知道他们的size。

    迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步,是惰性的。


    判断是不是可以迭代,用Iterable

    from collectionsimport Iterable  

    isinstance({}, Iterable) -->True  

    isinstance((), Iterable) -->True  

    isinstance(100, Iterable) -->False 

    凡是可以for循环的都是Iterable


    判断是不是迭代器,用Iterator

    isinstance({}, Iterator)  -->False  

    isinstance((), Iterator) -->False  

    isinstance( (xfor xin range(10)), Iterator)  -->True  

    凡是可以.(next)的,都是Iterator.


    备注:

    集合数据类型如list,truple,dict,str,都是Itrable不是Iterator,但可以通过iter()函数获得一个Iterator对象

    Python中的for循环就是通过next实现的

    参考资料:https://www.jianshu.com/p/c523b4a8be6c

    相关文章

      网友评论

        本文标题:Python中Iterator和Iterable的区别

        本文链接:https://www.haomeiwen.com/subject/pvwupqtx.html