Printing a list of list as columns with an equal amount of space inbetween
本问题已经有最佳答案,请猛点这里访问。
我在python中有一个列表,列表中的每个列表都有相同数量的元素。
1 2 3 | sample_list = [['1','22222222222222222','333'], ['111111111','2','3'], ['1','2','3']] |
我想打印出列表中的元素,使它们看起来像这样。
1 2 3 | 1 22222222222222222 333 111111111 2 3 1 2 3 |
在到下一列的最长项之间有两个空格。因此,在第二行的第一列中,1的序列将继续,而另两个空格将在下一列继续时继续。我不知道每个元素的确切长度,所以仅仅使用制表符( )是行不通的。如何将嵌套列表打印到由两个空格分隔的列表中?
编辑:我希望尽可能避免使用外部模块,我需要它位于python 2中。
像这样:
1 2 3 | sample_list = [['1','22222222222222222','333'], ['111111111','2','3'], ['1','2','3']] |
替代方案1:
1 2 3 4 5 6 7 | # 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(可读性较低,但无伪影)
1 2 3 4 5 6 | # Store max lengths l = [len(max(i, key=len)) for i in zip(*sample_list)] print(' '.join(' '.join(item[i].ljust(l[i]) for i in range(len(l))) for item in sample_list)) |
备选方案1(python2):
1 2 3 4 5 6 7 | # 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]),"", |
1 2 3 | 1 22222222222222222 333 111111111 2 3 1 2 3 |