我有这个列表: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
答案 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
我不会准确解释这段代码是如何工作的,因为我怀疑这是一个功课问题。