递归遍历python中的列表

时间:2017-01-18 02:07:26

标签: python recursion python-3.5

在学习练习中,我们被要求遍历一个多维列表,并在一个函数/ for循环中打印它的所有值。

我的大脑陷入了关于递归函数应该如何工作的基础知识,通过一些在线示例我想出了我应该得到的答案,但它在第一个列表中停止了它找到的值。

我在这里训练的错误是什么?

def walk(l):
    for v in l:
        if type(v) is list:
            return walk(v)
        else:
            print(v)

l = [

    [1,2,3],
    [4,5,6],
    [7,8,9]
]

walk(l)

>>1
>>2
>>3

1 个答案:

答案 0 :(得分:3)

删除return语句,因为它阻止你进入for循环的下一次迭代(当你调用 walk(l)时,它检查第一个子列表并发现它是一个列表然后遇到返回,这将停止当前函数的执行,因此它不会再进入下一次迭代,而只会执行 walk([1,2,3])并打印出来结果):

def walk(l):
    for v in l:
        if type(v) is list:
            walk(v)
        else:
            print(v)

walk(l)
1
2
3
4
5
6
7
8
9