Python生成器遍历一棵树

时间:2016-12-26 23:52:40

标签: python

我是Python生成器的新手。在这里,我想做一个树的后序遍历。我发现其他人的代码如下。我不太明白,相反,我想把它简单地写成后者。所以有人能告诉我为什么我错了吗?

def _loopallchildren(parent):
    for child in parent.children:
        if child.children:
            for subchild in _loopallchildren(child):
                yield subchild
        yield child

错误的代码:

def _loopallchildren(parent):
    for child in parent.children:
        if child.children:
            _loopallchildren(child)
        yield child

1 个答案:

答案 0 :(得分:3)

出于同样的原因,仅仅从外部调用favicon.ico而不对其做任何事情就没有做任何事情。你必须遍历生成器才能使用它。

在Python≥3.3中,您可以使用def read_data(file_path): with open(file_path, 'r') as fh: elements = fh.read() data = [element.strip() for element in elements.split(',')] return data def group(data): grouped = [', '.join(data[n:n+3]) for n in range(0, len(data), 3)] return grouped def write(data, output): with open(output, 'w') as fh: fh.writelines(data) def main(): data = read('test.csv') data = group(data) write(data, 'test2.csv')