将元组列表打印成表格
我有一个元组的列表:
list = [(element1, element2, element3), (elementelel4, element5, elementelement6), (el7, el8, elel9)]
我想把它打印成一个表格(这样元素之间的距离应该是一样的):
HEADER1 HEADER2 HEADER3
element1 element2 element3
elementelel4 element5 elementelement6
el7 el8 elel9
我试着用一些我找到的例子,但那些例子是用来打印列表的,而我这里是一个元组的列表。
6 个回答
1
下面的解决方案也可能会很有用。
脚本:
list_el = [('element1', 'element2', 'element3'),
('elementelel4', 'element5', 'elementelement'),
('el7', 'el8', 'elel9')]
row = "{name1:^20}|{name2:^20}|{name3:^20}".format
for tup in list_el:
print(row(name1=tup[0], name2=tup[1], name3=tup[2]))
输出:
element1 | element2 | element3
elementelel4 | element5 | elementelement
el7 | el8 | elel9
在“row”这一行,你可以调整格式,随意设置列的样式。
1
假设列表中的所有元组长度都是一样的,你可以使用这个:
l = [('element1', 'element2', 'element3'), ('elementelel4', 'element5', 'elementelement6'), ('el7', 'el8', 'elel9')]
width = max(len(e) for t in l for e in t[:-1]) + 1
format=('%%-%ds' % width) * len(l[0])
print '\n'.join(format % tuple(t) for t in l)
输出结果:
element1 element2 element3
elementelel4 element5 elementelement6
el7 el8 elel9
1
Python 3 的解决方案:
L = [('element1', 'element2', 'element3'),
('elementelel4', 'element5', 'elementelement6'),
('el7', 'el8', 'elel9')]
max_length_column = []
element_in_tuple = 3
for i in range(elements_in_tuple):
max_length_column.append(max(len(e[i])+2 for e in L))
for e in L:
for i in range(element_in_tuple):
print(e[i].ljust(max_length_column[i]), end='')
print()
输出结果:
element1 element2 element3
elementelel4 element5 elementelement6
el7 el8 elel9
4
你可以使用 ljust
来把元素左对齐,并且在一个固定的宽度内显示。
column_width=20
for row in list:
for el in row:
print el.ljust(column_width),
print
输出结果
element1 element2 element3
elementelel4 element5 elementelement6
el7 el8 elel9
8
使用 格式说明小语言
print "HEADER1 HEADER2 HEADER3"
for ele1,ele2,ele3 in l:
print "{:<14}{:<11}{}".format(ele1,ele2,ele3)
HEADER1 HEADER2 HEADER3
element1 element2 element3
elementelel4 element5 elementelement6
el7 el8 elel9