问题描述
我想递归垂直打印此列表: 示例:
print_list(['hi',[22,45],'dog',21])
预期:
hi
[22,45]
dog
21
这是我的代码:
def print_list(n_list):
if len(n_list) == 0:
return
else:
half = len(n_list) // 2
for i in range(half):
if half == 2:
print (n_list[i],sep = "\n")
else:
print (n_list[half+i])
这就是我得到的:
hi
[22,45]
dog
我不确定为什么列表没有完整打印。对于包含更多项目的列表,也只会出现一部分。我知道我在打印语句中弄乱了一些东西,但无法弄清楚...
解决方法
n_list = ['hi',[22,45],'dog',21]
print(*n_list,sep='\n')
给予
hi
[22,45]
dog
21
,
此功能不会产生所需的结果吗?
def print_list(n_list):
for item in n_list:
print(item)
我不确定为什么您只尝试迭代列表half = len(n_list) // 2
的一半?
您很亲近,但由于您的函数未调用自身,因此未在应用归约。这是应该稍作修改的代码,可以正常工作:
def print_list(n_list):
if len(n_list) == 0:
return
else:
half = (len(n_list) + 1) // 2
# Print elements in the first half:
for i in range(half):
print(n_list[i])
# Print second half using recursion:
print_list(n_list[half:])