2014-08-27 45 views
-3

好的,所以我有一個代碼,我需要用5x5的方塊打印遊戲板。所有的廣場在squareList,這是一個列表(哦,你不說)。正方形基於具有變量number的對象,這是我想要打印的值。我怎樣才能做到這一點?爲列表中的每個第五個對象做些什麼

編輯:爲什麼我想這樣做的原因是因爲我想每五個方塊開始一個新行,以便我得到一個板,而不是一行,值。

+1

'爲第五squareList [4 :: 5]:..做第五..' – falsetru 2014-08-27 15:37:38

+0

東西或者在itertools.islice(squareList,4,None,5)中爲第五個:...' – falsetru 2014-08-27 15:38:11

+4

我沒有看到問題標題和它的正文之間的關係。 – interjay 2014-08-27 15:38:25

回答

2

python slice/array運算符支持可選的step作爲第三個值。 squareList[start:end:step]:

for o in squareList[::5]: 
    print(o.number) 

使用5作爲步長值獲取列表中的每一個的第五項。

0

爲什麼不製作正方形中每一行的列表,然後將這些行放入列表中?

squareList = [rowList1, rowList2, rowList3, rowlist4, rowList5] 

這樣,您可以在循環遍歷行時操縱列。

for row in SquareList: 
    doSomething(row[4]) 

您還可以使用列表理解提取列。

colList1 = [row[0] for row in squareList] 
0

我同意你可能想要考慮其他更方便的數據結構,正如CCKx所建議的那樣。

這裏有兩種方法

假設:

squareList = [0,0,1,0,0, 
       1,2,0,0,1, 
       0,0,0,1,2, 
       2,2,0,0,0, 
       1,0,0,0,1] 

然後,你可以這樣做:

for index, value in enumerate(squareList): 
    print(value, end='') 
    if (index % 5) == 4: 
     print() 

(我假設的Python 3)

這將逐字按照你所要求的方式去做你所要求的。 index將通過列表中的每個元素進行數值計算,當您除以5時,% or "modulo" operator會讓您獲得剩餘的餘數,從而允許您在循環中每5次採取一些操作。

或者你可以用切片:

for row in range(5): 
    for cell in squareList[row*5:row*5+5]: 
     print(cell, end='') 
    print() 

參見:

What is the most "pythonic" way to iterate over a list in chunks?

相關問題