猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
构建一个基本的Python Iterator
构建一个基本的Python Iterator
如何在python中创建迭代函数(或迭代器对象)?
红糖糍粑
浏览 613
回答 3
3回答
小唯快跑啊
python中的Iterator对象符合迭代器协议,这基本上意味着它们提供了两种方法:__iter__()和next()..这个__iter__返回迭代器对象,并在循环开始时隐式调用。这个next()方法返回下一个值,并在每个循环增量处隐式调用。next()在没有更多值可返回时引发StopIteration异常,循环构造将隐式捕获该异常以停止迭代。下面是一个简单的计数器示例:class Counter: def __init__(self, low, high): self.current = low self.high = high def __iter__(self): return self def next(self): # Python 3: def __next__(self) if self.current > self.high: raise StopIteration else: self.current += 1 return self.current - 1for c in Counter(3, 8): print c这将打印:3 4 5 6 7 8正如前面的答案所述,使用生成器编写这一内容更容易:def counter(low, high): current = low while current <= high: yield current current += 1for c in counter(3, 8): print c印刷输出将是相同的。在引擎盖下,生成器对象支持迭代器协议,并执行类似于类计数器的操作。大卫·默茨的文章迭代器和简单生成器是个很好的介绍。
0
0
0
哈士奇WWW
首先迭代工具模块对于迭代器可能有用的各种情况,都是非常有用的,但下面是在python中创建迭代器所需的全部内容:产量这不是很酷吗?产量可以用来代替正常值回归在一个函数中。它同样返回对象,但它不是销毁状态和退出,而是保存状态,以便在您想要执行下一次迭代时使用。下面是直接从迭代工具函数列表:def count(n=0): while True: yield n n += 1如函数描述中所述(这是计数()),它生成一个迭代器,返回从n开始的连续整数。生成器表达式是另一罐蠕虫(可怕的虫子!)它们可以代替列表理解为了节省内存(列表理解在内存中创建一个列表,如果不分配给变量,则在使用后销毁,但是生成器表达式可以创建生成器对象.这是一种别出心裁的说法。下面是生成器表达式定义的示例:gen = (n for n in xrange(0,11))这与上面迭代器的定义非常相似,除非整个范围预定在0到10之间。我刚找到xrange()(得知我以前没见过.)并将其添加到上面的示例中。xrange()的可迭代版本。范围()它的优点是没有预先建立列表。如果您有一个庞大的数据集来迭代,并且只有这么多的内存可以执行,这将是非常有用的。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Python
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续