美文网首页
python 迭代器,生成器

python 迭代器,生成器

作者: 彳余三岁 | 来源:发表于2019-02-26 09:55 被阅读0次

    迭代

    Python 的迭代是通过for ... in 来完成的。 只要是可迭代对象,都可以用python进行迭代。如 dict,str,tuple

    d = {'a':1, 'b':2, 'd':4, 'c':3}
    for key in d:
        print(key)
    
    s = 'hello'
    for i in s:
        print(i)
    

    列表生成式

    列表生成式是Python内置的可以用来创建list 的生成式。

    >>>list(range(1,5))
    [1,2,3,4]
    >>>[x*x for x in range(1,5)]
    [1,4,9,16]
    >>>d = {'x':1, 'y':2, 'z':3}
    >>>for k,v  in d.items():
    >>>    print(k, '=', v)
    x = 1
    y = 2
    z = 3
    

    生成器

    通过列表生成式,可以直接创建一个列表,但会受到内存限制。生成器(generator)是一种在循环过程中不断推算后续元素的机制。

    >>>g = (x*x for x in range(1,5))
    >>>for n in g:
    >>>    print(n)
    1
    4
    9
    16
    
    >>>g
    <generator object <genexpr> at 0x000000000F1A6660>
    

    迭代器

    迭代器(Iterator)是指可以被next()函数不断调用并返回下一个值的对象。
    可以通过isinstance()判断一个对象是否是Iterator()对象。

    >>>from collections.abc import Tterator
    >>>isinstance((x for x in range(10)), Iterator)
    True
    >>>isinstance([], Iterator)
    False
    >>>isinstance({}, Iterator)
    False
    >>>isinstance('abc', Iterator)
    False
    

    tuple,dict,str是可迭代对象(iterable),但不是迭代器(iterator)
    iter()函数可以将tuple,dict,striterable变为iterator

    >>>from collections.abc import Tterator
    >>>isinstance(iter([]), Iterator)
    True
    >>>isinstance(iter('abc'), Iterator)
    True
    

    相关文章

      网友评论

          本文标题:python 迭代器,生成器

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