我试图遍历一棵树,迭代到一个叶,然后返回到根节点,向下迭代到下一个叶,直到到达树的末尾。你知道吗
当我将当前节点重置为根节点时,生成器表达式将重置,如何保留它?你知道吗
class New_node(object):
def __init__(self, data=''):
self.data = data
self.children = []
def add_child(self, obj):
self.children.append(obj)
def child_data(self):
return [c.data for c in self.children]
def select_child(self, letter):
return self.children[self.child_data().index(letter)]
def next_child(self):
for c in self.children:
yield c
for c in node.child_data()
...
...
...
try:
node = node.next_child().next()
except StopIteration:
node = root
函数中的
yield
语句使其成为生成器。所以next_child
方法是一个生成器。生成器通常用于for
循环。要使生成器中的下一个元素脱离
for
循环,请初始化生成器并对其调用next
函数。你知道吗我不太清楚您在for循环中到底在做什么,但是这里有一个生成器方法可以迭代。你知道吗
相关问题 更多 >
编程相关推荐