【发布时间】:2016-01-22 11:13:32
【问题描述】:
我不知道在使用嵌套循环时如何使双向链表的可迭代性正常工作。
到目前为止我的代码:http://pastebin.com/PU9iFggr
我试图让它可迭代:
def __iter__(self):
self.index = 0
return (self)
def next(self):
try:
result = self._findNode(self.index).get()
except IndexError:
self.index = 0
raise StopIteration
self.index += 1
return result
def __getitem__(self, item):
return self._findNode(item).get()
如果在一个 for 循环内,它似乎可以工作,但不能在两个内:
myList = DoublyLinkedList()
myList.append(0)
myList.append(1)
myList.append(2)
myList.append(3)
for i in myList:
print i #works as expected
for i in myList:
for j in myList:
print j #goes forever
我想问题是对象内部只有一个 self.index 正在被两个 for 循环更新,但我不知道如何解决这个问题。
【问题讨论】:
-
因为您迭代同一个实例并使用单个实例属性来跟踪您的迭代。