我想要生成树中每个叶到根的所有路径。我想用发电机来做到这一点,以节省内存(树可以很大)。这是我的代码:Python(yield):树中从叶到根的所有路径
def paths(self, acc=[]):
if self.is_leaf():
yield [self.node]+acc
for child in self.children:
child.paths([self.node]+acc)
但它不起作用。为什么?在根中调用时,它从上到下遍历树,收集“acc”中的节点。 “acc”应该在每一片叶子中返回...
如果self.children为空,则is_leaf()为true。
我一直在想 - 有没有一个快速的“全部产生”命令,或者是最短的'for'循环你写的? – Owen
@Own nope,但我发现它可以这样,它只是两条简单的线...... –
在Python 3.3中,会有一个'yield from'语句,它会自动从另一个生成器中产生项目,所以任何'for'循环有一个“yield”,你可以写成一个生成器表达式,可以制作成一行。 – agf