我是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
答案 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')
。