2016-02-25 72 views
2

我是相當新的Python中的行列表,並有一個很難搞清楚如何在給定的情況下,這些行打印的清單:打印在一組長度(Python)的

列表開始是空的,並計算機將生成隨機的2位整數條目,然後將其附加到列表中。打印列表是很容易的,無論是在一列或使用

for i in list: 
    print(i, end = "") 

但我想要做的是打印4行一行,結束與任何其餘的是列表(例如一排3),所以結果看起來像這樣:

81 27 19 55 
99 45 32 90 
67 83 20 72 
12 86 21 

什麼是最好和最直接的方法來做到這一點?

編輯:我忘了說明我正在Python 3中工作。對不起。

+0

我猜pprint是一個很好的抓 https://docs.python.org/2/library/pprint.html#pprint.PrettyPrinter 嘗試與構造 – mitsest

+0

的寬度參數打將你的列表分成4塊([鏈接1](http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python), [鏈接2](http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to-iterate-over-a-list-in-chunks)),並打印每個塊一條線。 – gil

回答

1

只需添加一個聲明以換行符下降每4個項目:

count = 1 
for i in list: 
    print(i, end = "") 
    count += 1 
    if count % 4 == 0: 
     print('\n') 

如果你喜歡更好的索引:

for i in len(list): 
    print(list[i], end = "") 
    if i % 4 == 0: 
     print('\n') 

這是否能解決這個問題嗎?

+0

爲什麼不'枚舉'? – gil

+0

我保持技術水平低。您可能想要添加枚舉作爲備用答案。 – Prune

2

您可以使用模數運算符來識別何時位於第4列並將end值更改爲print

for i, val in enumerate(list): 
    end = '\n' if (i + 1) % 4 == 0 else ' ' 
    print(val, end=end) 
1
for ind, val in enumerate(yourList): 
    if ind != 0 and ind % 4 == 0: 
     print('\n') 
    print(val, end=' ') 
0

如果這是一個數字的首發名單:

numbers = [81, 27, 19, 55, 99, 45, 32, 90, 67, 83, 20, 72, 12, 86, 21] 

我首先將它們組合成單獨的列表:

grouped_numbers = [numbers[i:i+4] for i in range(0,len(numbers),4)] 

然後我會打印出各組它們之間的空白區域使用join函數

for group_of_numbers in grouped_numbers: 
    print (" ".join(map(str,group_of_numbers))) 
+0

OP似乎在使用python 3. – gil

+0

我對python 3中的運行進行了更改,沒有發生錯誤 –

3

有許多方法可以做到這一點,正如其他人所表明的那樣。還有一個:

for i in range(0, len(mylist), 4): 
    print(*mylist[i:i+4], sep=' ')