打印列表然后再打印

时间:2012-10-21 20:48:16

标签: python list-comprehension

如何在Python中打印列表然后再打印?

l = [v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14]

v1 v4 v7 v10 v13  
v2 v5 v8 v11 v14  
v3 v6 v9 v12  

列表的长度可能有所不同,但目前我想以5列格式打印。

2 个答案:

答案 0 :(得分:7)

这样的事情应该有效:

>>> def print_list_matrix(lst, row_num):
...     for i in range(row_num):
...         print ' '.join(lst[i::row_num])
... 
>>> print_list_matrix(lst, 3)
v1 v4 v7 v10 v13
v2 v5 v8 v11 v14
v3 v6 v9 v12
>>> print_list_matrix(lst, 4)
v1 v5 v9 v13
v2 v6 v10 v14
v3 v7 v11
v4 v8 v12

答案 1 :(得分:0)

L = ['v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9', 'v10', 'v11', 'v12', 'v13', 'v14']
numRows = 3
matrix = [L[numRows*i: numRows*(i+1)] for i in range((len(L)/numRows)+1)]
for row in itertools.izip_longest(*matrix):
    print ' '.join(str(i) for i in row if i is not None)


In [143]: L = ['v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9', 'v10', 'v11', 'v12', 'v13', 'v14']

In [144]: numRows = 3

In [145]: matrix = [L[numRows*i: numRows*(i+1)] for i in range((len(L)/numRows)+1)]

In [146]: for row in itertools.izip_longest(*matrix):
   .....:     print ' '.join(str(i) for i in row if i is not None)
   .....:     
v1 v4 v7 v10 v13
v2 v5 v8 v11 v14
v3 v6 v9 v12