将列表列表打印为列,其间具有相等的空间

时间:2017-12-12 09:15:22

标签: arrays python-2.7 list nested

我在python中有一个列表列表,列表中的每个列表都有相同数量的元素。

sample_list = [['1','22222222222222222','333'],
               ['111111111','2','3'],
               ['1','2','3']]

我想打印出列表中的元素,使它们看起来像这样。

1          22222222222222222  333 
111111111  2                  3
1          2                  3

在最长项目与下一列之间将有2个空格。因此,在第2行第一列中,1s系列继续,另外2个空格在下一列继续时。我不知道每个元素的确切长度,所以只使用制表符(\ t)将不起作用。如何将嵌套列表打印到由2个空格分隔的列表中?

编辑: 我希望尽可能避免使用外部模块,我需要它在python 2中

1 个答案:

答案 0 :(得分:3)

这样的事情:

sample_list = [['1','22222222222222222','333'],
               ['111111111','2','3'],
               ['1','2','3']]

备选方案1:

# Store max lengths
l = [len(max(i, key=len)) for i in zip(*sample_list)]

for item in sample_list:
    for idx in range(len(l)):
        print(item[idx].ljust(l[idx]), end='  ')
    print()

备选方案2(可读性较差但没有伪影)

# Store max lengths
l = [len(max(i, key=len)) for i in zip(*sample_list)]

print('\n'.join('  '.join(item[i].ljust(l[i]) for i in range(len(l))) 
              for item in sample_list))

备选方案1(python2):

# Store max lengths
l = [len(max(i, key=len)) for i in zip(*sample_list)]

for item in sample_list:
    for idx in range(len(l)):
        print item[idx].ljust(l[idx]), "",
    print
1          22222222222222222  333  
111111111  2                  3    
1          2                  3