首页 > 代码库 > python迭代器与生成器
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迭代器与生成器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。