首页 > 解决方案 > 如何打印带有对齐文本的列表列表,rjust() 的整数长度来自列表中字符串的最大长度。

问题描述

我试图找到答案,但大多数答案都使用 map() 或 zip() 等高级函数。我必须只使用字符串属性、方法或函数。我找不到字符串函数或属性的答案。

我需要将给定的列表列表打印到右对齐的列中。它是每个子列表的一种转置,即列表列表中的第一个列表打印为表格的第一列,第二个列表第二列,依此类推。

给定的列表列表:

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

和所需的输出:

在此处输入图像描述

请注意,rjust() 的参数来自 tableData 中最长单词的最大长度。

我已经计算出了 tableData 中最长单词的最大整数长度,如下所示:

colWidths=[]
for i in range(len(tableData)):
    maxL=len(max(tableData[i], key=len))
    colWidths.append(maxL) 
max(colWidths)

现在我被困住了如何编写一个循环来以所需的表格格式打印列表。(我可以使用 zip() 或 map() 来做到这一点,但那不被接受!)有什么帮助吗?

标签: pythonpython-3.xstringstring-operationsright-justified

解决方案


如果你不想转置表,你可以用肮脏的方式来做:

for column in range(4):
    for row in range(3):
        print(tableData[row][column].rjust(10), end='')
    print('')

如果您的任务需要,可以动态设置列/行范围


推荐阅读