def print_list(l):
for item in l:
if isinstance(item, list):
print_list(item)
else:
print(item)
我已经编写了这个函数,它使用递归来正确打印列表,但我的问题是,当我给它一个像[[1, 2, 3], 4]
这样的参数时,它应该在显示3
之后终止,但它仍然正确显示所有4个值是什么原因,有人可以启发我。
答案 0 :(得分:4)
我认为你误解了递归。
外部列表有两个项目,一个是列表,另一个是数字4. print_list()
函数再次调用print_list()
来打印内部列表,然后再调用print(4)
元件。
所以,这就是:
print_list([[1, 2, 3], 4])
- >循环超过2个项目
print_list([1, 2, 3])
- >循环超过3个项目
print(1)
print(2)
print(3)
print(4)
答案 1 :(得分:0)
当我尝试你的功能时,我得到了
1
2
3
4
作为输出。这正是您所期望的,因为您的函数首先进入递归,循环遍历[1, 2, 3]
。这会将1
打印到3
。然后递归完成,返回到原始调用,打印外部列表中的第二个元素,即4
。
答案 2 :(得分:0)
为什么你希望程序在三点终止? 如果你说递归以3号打印输出停止,你就是对的,但此时原始列表仍未完全处理。如果你写下你的程序的步骤,它可以这样读: