我想要一个迭代器,它基本上返回列表属性的每个元素。下面的代码工作,但需要一个丑陋的实例变量导致问题:如何编写可重入迭代器
只要我创建另一个迭代器实例(而不是重新使用testIter)嵌套循环工作正常,但这似乎不是一个选项,我的全部生活问题。
如何摆脱实例变量而不牺牲整洁的对于语法中的某些内容?
class MyIterator(object):
def __init__(self, myList):
self._list = myList
def __iter__(self):
self.cursor = 0
return self
def next(self):
try:
nextElem = self._list[self.cursor]
except IndexError:
raise StopIteration
else:
self.cursor += 1
return nextElem
def test(l):
testIter = MyIterator(l)
for line in testIter:
for column in testIter:
print "{}/{}".format(line, column),
print
if __name__ == "__main__":
test("abc")
谢谢你的提示,但我不认为演示例程应该是类的一部分。不幸的是,答案并没有真正解决核心问题。 – guidot