我在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中
答案 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