Я не могу понять, как правильно выполнить итерабельность моего двойного связного списка при использовании вложенных циклов.Создание двойного связанного списка iterable
Мой код до сих пор: 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()
Это похоже на работу, если внутри одного для цикла, но не внутри двух:
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, но я не знаю, как это исправить.
Постарайтесь повторить этот же экземпляр и использовать атрибут одного экземпляра для отслеживания итерации. – dursk