概述
2019独角兽企业重金招聘Python工程师标准>>>
一直以为 Python 的生成器是指 列表生成, 好吧,我读书少。
其实呢,生成器是 使用yield 返回实现了迭代器协议的generator 对象。 如下:
<!-- lang: python -->
class Data(object):
def __init__(self, *args):
self._data = list(args)
def __iter__(self):
for x in self._data:
yield x
d = Data(1,2,3)
>>> d.__iter__()
<generator object __iter__ at 0x7f8556d4cdc8>
在python2 中 使用d.next() 可以返回 d 的下一个值, 在 python3 中 需要使用 d.next() 返回 d 的生成器的下一个值, 生成器可用于 协程够造。
关于迭代器 根据迭代器协议, 需要实现____iter____() 和 next() 两个方法, 前者返回迭代器对象,后者返回数据,直到引发StopIteration 异常结束。
<!-- lang: python -->
class Data(object):
def __init__(self, *args):
self.data = list(args)
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.data):
d =
self.data[self.index]
self.index +=1
else:
raise StopIteration()
return d
转载于:https://my.oschina.net/innovation/blog/359377
最后
以上就是舒适煎饼为你收集整理的Python 迭代器和 生成器的全部内容,希望文章能够帮你解决Python 迭代器和 生成器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复