2017-05-30 38 views
2

我有這樣如何在Python中打印指定列寬的列表?

mylist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 

如何打印列表與指定的列寬

例如,我想打印column = 5則新行

print(mylist, column= 5) 
[ 1, 2, 3, 4, 5, 
    6, 7, 8, 9, 10, 
11, 12, 13, 14, 15, 
16, 17, 18, 19, 20] 

或者我想要的清單打印column = 10 then new line

print(mylist, column= 10) 
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 

我知道我可以使用for-loop來做到這一點,但我想知道是否有這樣做的功能呢?

回答

5

使用numpy數組而不是列表並重新設置數組。

>>> import numpy as np 
>>> array = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) 
>>> 
>>> column = 5 
>>> print(array.reshape(len(array)/column, column)) 
[[ 1 2 3 4 5] 
[ 6 7 8 9 10] 
[11 12 13 14 15] 
[16 17 18 19 20]] 
>>>>>> column = 10 
>>> print(array.reshape(len(array)/column, column)) 
[[ 1 2 3 4 5 6 7 8 9 10] 
[11 12 13 14 15 16 17 18 19 20]] 

當然,這將拋出一個ValueError如果它是不可能劃分成array同樣column大小列。

3

不知道爲什麼,但我認爲有些東西接近我想你想達到可使用numpy的陣列重塑來完成通過固定的行數爲-1

import numpy as np 
array=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) array 
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
     18, 19, 20]) 
array.reshape(-1,5) 

array([[ 1, 2, 3, 4, 5], 
     [ 6, 7, 8, 9, 10], 
     [11, 12, 13, 14, 15], 
     [16, 17, 18, 19, 20]]) 

array.reshape(-1,10) 

給出

array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 
     [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]]) 
+1

很酷,我不知道'reshape'接受-1作爲參數。更多信息在這裏:https://stackoverflow.com/questions/18691084/what-does-1-mean-in-numpy-reshape – timgeb

+1

感謝您的鏈接 – Eliethesaiyan

1

你也可以通過使用切片來做到這一點。

mylist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 

def print_list(mylist, no_of_cols): 
    start_index = 0 
    for i in range(no_of_cols, len(mylist), no_of_cols): 
     print mylist[start_index:i] 
     start_index = i 

    if len(mylist) > start_index: 
     print mylist[start_index:len(mylist)] 

print_list(mylist, 5)