打印元组列表作为表

时间:2014-08-20 11:12:06

标签: python string list formatting tuples

我有一个列表o元组:

list = [(element1, element2, element3), (elementelel4, element5, elementelement6), (el7, el8, elel9)]

我想将其打印为表格(因此元素之间的距离应该相同):

HEADER1       HEADER2    HEADER3
element1      element2   element3
elementelel4  element5   elementelement6
el7           el8        elel9

我试图使用我发现的一些示例,但它用于打印列表列表,我有一个元组列表。

5 个答案:

答案 0 :(得分:5)

使用Format Specification Mini-Language

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

答案 1 :(得分:2)

您可以使用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  

答案 2 :(得分: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  

答案 3 :(得分: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

答案 4 :(得分:0)

带有标签的 Python3 非常简单的解决方案,即 \t 和 f-string 功能:

a = [(0.3, 0, 1.57),(0.3, 0, -1.57),(0.3, 0, 0.78)]
for q,w,e in a:
  print(f"{q}\t{w}\t{e}")

输出:

0.3     0       1.57    
0.3     0       -1.57   
0.3     0       0.78