水平列出列表元素

时间:2015-12-04 14:43:55

标签: python python-3.x

我有这个列表:lista = [[2],[1,2],[2],[3],[3]]我需要它来打印它:

      1
  2   2   2   3   3

我该怎么办? 我尝试过:

for x in a:
    for e in x:
        print(str(e) + '  ', end='')

这是我获得的:

2   1   2   2   3   3   

1 个答案:

答案 0 :(得分:0)

这是一个愚蠢的单行版本:

def print_table(seq, width=3):
    print('\n'.join([''.join(
        [(str(u[-i]) if len(u) >= i else '').rjust(width) for u in seq])
            for i in range(max(len(u) for u in seq), 0, -1)]))

这是一个更易读的形式的相同算法:

def get_cell(u, i):
    return str(u[-i]) if len(u) >= i else ''

def print_table(seq, width=3):
    maxlen = max(len(u) for u in seq)
    for i in range(maxlen, 0, -1):
        row = [get_cell(u, i).rjust(width) for u in seq]
        print(''.join(row))

#Test
lista=[[2], [1, 2], [2], [3], [3]]
listb=[[4], [2, 5], [1, 3, 6], [7], [8]]

print(lista)
print_table(lista)
print('-' * 20)

print(listb)
print_table(listb)

<强>输出

[[2], [1, 2], [2], [3], [3]]
     1         
  2  2  2  3  3
--------------------
[[4], [2, 5], [1, 3, 6], [7], [8]]
        1      
     2  3      
  4  5  6  7  8

我不会准确解释这段代码是如何工作的,因为我怀疑这是一个功课问题。