迭代器生成器
Posted liutianyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器生成器相关的知识,希望对你有一定的参考价值。
一、迭代器
迭代的概念:
迭代是一个重复的过程,每次重复就是一次迭代,并且每次迭代的结果是下一次迭代的初始值
while True : # 这只是单纯的重复 并不是迭代 print("--->") l = [1,2,3] #迭代 test = 0 while test < len(l): print(l[test]) test+=1
迭代器协议:
1、迭代器协议是指: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代。
2、可迭代对象:实现了迭代器协议的对象 (如何实现:对象内部定义一个__iter__()方法)
3、迭代器对象:可迭代对象执行obj.__iter__()得到的结果就是迭代器对象而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象
4、注意:迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象
二、生成器
什么是生成器:可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其它数据类型需要调用自己的__iter__()方法),所以生成器就是可迭代对象
生成器分为两种形式:
1、生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果
def test(): yield 1 yield 2 yield 3 g=test() print(‘来自函数‘,g)
2、生成器表达式:类似列表推导,但是生成器返回按需产生结果的一个对象,而不是一次架构一个结果列表
laomuji=(‘鸡蛋%s‘ %i for i in range(10)) #生成器表达式 print(laomuji) print(laomuji.__next__()) print(laomuji.__next__()) print(next(laomuji))#与上面laomuji.__next__()一样
以上是关于迭代器生成器的主要内容,如果未能解决你的问题,请参考以下文章
python:可迭代对象,迭代器,生成器函数,生成器的解析举例代码说明