我正在做一些家庭作业,问题是:编写一个遍历链表节点的Python生成器。
提示:使用产量。
class Node:
pass
def my_generator():
start = Node()
point = start
point.data = 1
print(point.data)
point.next = Node()
point = point.next
point.data = 2
print(point.data)
point.next = Node()
point = point.next
point.data = 3
print(point.data)
point.next = Node()
point = point.next
point.data = 4
print(point.data)
point.next = None
我对Python比较陌生,过去两天我一直试图弄清楚如何在这段代码中使用Yield。我明白通过使用其他选项,我可以更轻松地做到这一点在Python中,但这是我的作业的固定问题。谢谢
答案 0 :(得分:1)
在发电机的基本形状上采用look可能会有所帮助:
def firstn(n):
num = 0
while num < n:
yield num
num += 1
我们可以在一个可迭代的东西中调用和使用,例如,
sum(firstn(50))
您的列表似乎给了我next
并在完成后返回None
,因此您需要
def my_generator():
item = start
while item is not None:
yield num
item = item.next
决定这是否是集体成员 - 我会把它留给你。我还没有为列表本身添加代码。
您现在的&#34;发电机&#34;似乎是在数据走过时设置数据 - 尝试保持一个函数来填充列表,这样你就可以让生成器只做一件事 - 走在列表中。
答案 1 :(得分:0)
您应该使用yield来生成列表的迭代器: