【发布时间】:2018-07-22 17:48:37
【问题描述】:
我正在尝试在 Python 中实现一个简单的链接列表,并尝试使用我在其中学到的所有 Python 概念。我一直在为该类实现一个生成器。
代码:
def __iter__(self):
return self
def next(self):
tempNode = self.head
while tempNode:
yield tempNode.data
tempNode = tempNode.nextNode
else:
raise StopIteration
用法:
list_gen = iter(list1)
print (next(list_gen))
print (next(list_gen))
输出:
0x7ff885b63960 处的生成器对象
0x7ff885b63960 处的生成器对象
它既不打印节点的数据值,也不维护方法的当前状态[从返回的地址中可以看出]。
我在哪里犯了错误?提前致谢。
编辑 我将代码修改为:
def next(self):
tempNode = self.head
while tempNode:
tempNode2 = tempNode
tempNode = tempNode.nextNode
return tempNode2.data
else:
raise StopIteration
现在是打印节点值,但如前所述,不保存状态,每次都打印第一个节点的值。
【问题讨论】:
-
你看到这个答案了吗? stackoverflow.com/a/42983747/5606265
标签: python python-3.x python-2.7 generator