如何在我的链表中使用Yield?

时间:2015-10-11 14:37:23

标签: python python-3.x

我正在做一些家庭作业,问题是:编写一个遍历链表节点的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中,但这是我的作业的固定问题。谢谢

2 个答案:

答案 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来生成列表的迭代器:

What does the "yield" keyword do in Python?