gpt4 book ai didi

Python 生成器 : correct code recursing a tree

转载 作者:太空狗 更新时间:2023-10-29 20:39:04 25 4
gpt4 key购买 nike

class Node(object):
def __init__(self, lst):
if type(lst) == list:
self.value = lst[0]
self.children = lst[1:]
else:
self.value = lst
self.children = []
@property
def ChildElements(self):
return [Node(a) for a in self.children]

@property
def GetValue(self):
return self.value

def node_recurse_generator(node):
yield node.value
for n in node.ChildElements:
node_recurse_generator(n)

节点是一种简单的树状数据结构。列表的第一个元素始终是节点的值,其他元素将是子元素。如果节点是用列表以外的其他东西启动的,则该值将是那个,子节点将是 [],一个空列表。

a = Node([1,[10,20,30],[100,200,300]])
>>> list(node_recurse_generator(a))
[1]

现在,如果有一个遍历所有元素的递归迭代器就好了,但我的生成器只生成第一个元素。为什么会这样?

最佳答案

简单地递归调用 node_recurse_generator 是不够的 - 你必须 yield 它的结果:

def node_recurse_generator(node):
yield node.value
for n in node.ChildElements:
for rn in node_recurse_generator(n):
yield rn

关于Python 生成器 : correct code recursing a tree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7634323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com