在学习练习中,我们被要求遍历一个多维列表,并在一个函数/ 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
答案 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