python迭代器与生成器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python迭代器与生成器相关的知识,希望对你有一定的参考价值。
一、迭代
1.重复
2.下一次重复是基于上一次结果
二、迭代器
python为了提供一种不依赖于索引的迭代方式,python会为一些对象内置__iter__方法,obj.__iter__称为可迭代的对象,obj.__iter__得到的结果就是迭代器,得到的迭代器既有__iter__,也有一个__next__方法
d={‘a‘:1,‘b‘:2,‘c‘:3} i=d.__iter__() #i叫迭代器 print(i.__next__())
三、迭代器的优缺点
1.优点:
1)提供了一种不依赖于索引的取值方式
2)惰性计算,节省内存
2.缺点
1)取值不如按照索引取值方便
2)一次性的,只能往后走不能往前推
3)无法预知长度
四、生成器
1.生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器函数
2.生成器就是迭代器
def foo(): print(‘first---------->‘) yield 1 print(‘second---------->‘) yield 2 print(‘third---------->‘) yield 3 print(‘fouth---------->‘) g=foo() print(g.__next__()) print(g.__next__()) print(g.__next__()) print(g.__next__())
yield的功能:
1.与return类似,都可以返回值,但不一样的地方在于yield返回多次值,而return只能返回一次
2.为函数封装好了__iter__和__next__方法,吧函数的执行结果做成了迭代器
3.遵循迭代器的取值方式obj.__next__(),触发函数的执行,函数暂停与再继续的状态都是由yield保存
def countdown(n): print(‘starting countdown‘) while n > 0: yield n n-=1 print(‘stop countdown‘) g=countdown(5) for i in g: print(i)
以上是关于python迭代器与生成器的主要内容,如果未能解决你的问题,请参考以下文章