如何产生嵌套迭代器返回的所有值?

时间:2014-06-09 18:09:51

标签: python recursion tree yield

我为JSON创建了一个简单的深入树扫描(只有列表和值,没有对象):

def depth(x):
    for e in x:
        if type(e) == list:
            for s in depth(e):
                yield s
        else:
            yield(e)

构建

for s in depth(e):
    yield s

工作正常,但我不喜欢它。

是否有任何漂亮的方法可以通过调用函数产生所有产生的东西,而不需要循环?

1 个答案:

答案 0 :(得分:3)

在Python 3.3或更高版本中,您可以使用yield from depth(e)。在早期版本的Python中,你必须像你一样写出嵌套循环。