将元组列表打印成表格

1 投票
6 回答
14665 浏览
提问于 2025-04-18 17:54

我有一个元组的列表:

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

撰写回答