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]
Теперь было бы здорово иметь рекурсивный итератор для всех элементов, но мой генератор выдает только первый элемент. Почему это происходит?