python_迭代器和生成器

迭代器 iterator  和 生成器 generator

  什么是迭代器:迭代器就是获取迭代对象中元素的工具,迭代器是由可迭代对象生成的

    1、迭代器是指用iter(可迭代对象)函数返回的对象(实例)

    2、迭代器可以用next(it)函数获取可迭代对象的数据

  迭代器函数:

    1、iter(iterable)从可迭代对象中返回一个迭代器,iterable必须是一个能提供迭代器的可迭代对象,<list_iterator object at 0x0000027694817588>、    ·                           <tuple_iterator object at 0x0000027694817630>、<range_iterator object at 0x00000276945E7CF0>...

    2、next(iterator)从迭代器iterator中获取下一条记录,如果无法获取下一条记录,则触发StopIteration异常

  说明:

    1、迭代器是访问可迭代对象的一种方式

    2、迭代器只能向前取值,不能后退

    3、用iter函数可以返回一个可迭代对象的迭代器

扫描二维码关注公众号,回复: 2236107 查看本文章

    4、可迭代对象 创建 迭代器,迭代器 访问 迭代器对象

  迭代器的用途

    迭代器对象能用next函数获取下一个元素

"""for语句其实就是iter函数,next函数与while语句的结合"""
L =[2,3,5,7]
for x in L:
    print(x)
print("-----while语句---------")
it = iter(L)
while True:
    try:
        x = next(it)
        print(x)
    except StopIteration:
        print("迭代终止,迭代器不能提供任何数据")
        break

  生成器 Generator (python 2.5之后才产生的)

    什么是生成器:

      生成器是指能够动态提供数据的对象,生成器对象也是可迭代对象(实例)<generator object myyield at 0x0000020BA953D0A0>

    生成器有两种:

      1、生成器函数

      2、生成器表达式

    生成器函数定义:

      含有yield语句的函数是生成器函数,此函数被调用时将返回一个生成器对象

      注:yield翻译为产生(或生成)

      语法:yield 表达式

      说明:1、yield用于def函数中,目的是将此函数作为生成器函数使用

         2、yiled用来生成数据,供迭代器next(it)函数使用

                     

    生成器函数说明:

      1、生成器函数的调用将返回一个生成器对象,生成器对象是一个可迭代对象

      2、在生成器函数调用return语句时会产生一个StopIteration异常来通知next(it)不能再提供数据

猜你喜欢

转载自www.cnblogs.com/xdl-smile/p/9333713.html