递归打印字符串,具体取决于在多个列表中添加了多少项

2024-04-20 06:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序打印出3列

column_1      column_2      column_3

每列对应一个不同长度的列表。基本上,我将列作为标题打印出来,然后在每列下打印出一些内容,但每次运行程序时,列表长度都会有所不同。我无法导入列库来构造列,我以这种方式遇到了其他问题

要查看最长的列表,我有以下代码。这解决了知道每次打印多少行的问题,因为行数最多的列将等于要打印的总行数

def longest_list(x):

    list_len = [len(i) for i in x]
    print(max(list_len))

拼图的下一步是打印每一行,并将每个列表项放在适当的位置。 我想这样做:

if len(list_1) == 1:
    print(f'{list_1[0]}      {list_2[0]}      {list_3[0]}'

我必须在索引位置0的每个列表中放置一个字符串占位符,否则如果一个占位符为空,将返回一个错误,这是可能的

我不知道该如何以正确的方式扩大规模。比如说,列表1有1个项目,列表2有10个项目,列表3有4个项目,我如何动态/递归地检查并打印出正确的字符串?在这种情况下,我们需要10行,第一行是索引0,第二行为列表1返回空,索引2为列表3等等。有什么想法吗

编辑样本输入/输出

字符串输入

hello

输出

column_1      column_2      column_3

word_1        word_2        word_3
              word_4        word_5
              word_6        word_7
              word_8
              word_9

列_1中的单词属于列表_1、列_2列表_2和列_3到列表_3


1条回答
网友
1楼 · 发布于 2024-04-20 06:44:22

您可以执行以下操作。关键是get_row_value函数,如果列表中没有给定行的条目,它只返回一个空字符串。还要注意使用ljust(col_width)来保持单元格间隔均匀,即使每个单元格中的字符串值长度不同

def get_row_value(col_list, row_num):
    return col_list[row_num] if len(col_list) > row_num else ''

col_lists = [col_1, col_2, col_3]
max_length = max(len(col_list) for col_list in col_lists)
col_width = 10 # set this to whatever you want
for row_num in range(0, max_length):
    row_str = ''
    for col_list in col_lists:
        row_value = get_row_value(col_list, row_num)
        row_str += row_value.ljust(col_width)
    print(row_str)

相关问题 更多 >