我是靠谱客的博主 舒适煎饼,最近开发中收集的这篇文章主要介绍Python 迭代器和 生成器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一直以为 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 迭代器和 生成器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部