2012-10-21 51 views
2

如何打印一个列表,然后在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列格式打印。

+1

这是更好地避免使用内置的喜欢“清单”作为变量名名。 –

回答

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 
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 
相关问题