我试图理解Python中的Iterability。在
据我所知,__iter__()
应该返回一个定义了next()
方法的对象,该对象必须返回值或引发StopIteration
异常。因此,我编写了一个满足这两个条件的类。在
但似乎行不通。怎么了?在
class Iterator:
def __init__(self):
self.i = 1
def __iter__(self):
return self
def next(self):
if self.i < 5:
return self.i
else:
raise StopIteration
if __name__ == __main__:
ai = Iterator()
b = [i for i in ai]
print b
迭代器类是正确的。你只是在这句话中有个错误:
在''uu main\'u'字符串中有一个前导空格。这就是为什么你的代码根本不执行。在
如果不在
next()
中递增,i
永远不会大于5你当前的代码似乎有效。相反,我将向您展示更多的迭代器/生成器。在
最简单的内建物就是你的行为。在
将类直接转换为生成器
^{pr2}$由python标准库中的生成器组成的生成器
一个简单的生成器表达式(不太令人兴奋…)
相关问题 更多 >
编程相关推荐