如何使用递归垂直打印列表?

问题描述

我想递归垂直打印此列表: 示例:

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:])