嵌套数组遍历的问题

2018-01-03 17:19:50 +08:00
 bestkayle
arr = [1,2,3,[4,5,6,[7,8,9],10],11,12,[13,14,[15,16]],[17]]
def gen(li):
    for i in li:
        if isinstance(i,list):
            gen(i)
        else:
            print i
gen(arr)

输出的结果就是按顺序遍历的结果,但是如果把 gen(i)改成 return gen(i)就只能遍历到 9,不加 return 能从 9 再跳到父级数组继续遍历,这里面的原理是什么?

2338 次点击
所在节点    算法
4 条回复
neosfung
2018-01-03 17:36:36 +08:00
到 9 的时候,return gen(i),打印 9,并返回 None,None 层层传递,就这样了
ballshapesdsd
2018-01-03 17:42:56 +08:00
你不会手动执行下
bestkayle
2018-01-03 17:54:00 +08:00
@neosfung 额,其实我想问的是不加 return 继续执行怎么返回父级数组的
neosfung
2018-01-05 11:30:53 +08:00
@bestkayle 这是深度遍历的算法,要不你单步调试,看看递归的入栈情况吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/419774

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX