美文网首页
python生成器、迭代器、可迭代对象

python生成器、迭代器、可迭代对象

作者: Eren_Jaeger | 来源:发表于2019-04-10 11:22 被阅读0次
    • 可迭代对象
    • 迭代器
    • 生成器
    1.可迭代对象

    可以被for循环遍历的对象成为可迭代对象,其中包括list、str、tuple、dict、set、generator都属于可迭代对象,这是属于一个很大的概念范畴

    >>> generator1 = (i for i in range(10))
    >>> next(generator1)
    0
    >>> next(generator1)
    1
    >>> next(generator1)
    2
    >>> dict1 = {'A': 1, 'B': 2}
    >>> next(dict1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'dict' object is not an iterator
    >>> 
    
    2.迭代器

    可以被next函数调用、直到没有数据时抛出StopIteration错误的可迭代对象成为迭代器(iterator),迭代器是一个数据流,我们可以知道它是有序的,但是我们不知道它的长度。iterator可以表示很大的数据流,可以是全体自然数,对于list来说可做不到那么多内存给它用。

    如何将list、tuple、dict、str、set等数据转换成迭代器?
    可以使用iter()函数转换,比如:

    >>> tuple1 = (1, 2, 3,)
    >>> 
    >>> next(tuple)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'type' object is not an iterator
    >>> 
    >>> 
    >>> next(iter(tuple1))
    1
    >>> 
    
    3.生成器

    生成器(generator)属于iterator的对象,可以有两种写法:一种是把列表生成式的[]改成()就变成了generator,另一种则是在函数中使用yield函数。具体生成器怎样创建,我在上一篇文章中有写

    相关文章

      网友评论

          本文标题:python生成器、迭代器、可迭代对象

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