好的,所以我有一個代碼,我需要用5x5的方塊打印遊戲板。所有的廣場在squareList
,這是一個列表(哦,你不說)。正方形基於具有變量number
的對象,這是我想要打印的值。我怎樣才能做到這一點?爲列表中的每個第五個對象做些什麼
編輯:爲什麼我想這樣做的原因是因爲我想每五個方塊開始一個新行,以便我得到一個板,而不是一行,值。
好的,所以我有一個代碼,我需要用5x5的方塊打印遊戲板。所有的廣場在squareList
,這是一個列表(哦,你不說)。正方形基於具有變量number
的對象,這是我想要打印的值。我怎樣才能做到這一點?爲列表中的每個第五個對象做些什麼
編輯:爲什麼我想這樣做的原因是因爲我想每五個方塊開始一個新行,以便我得到一個板,而不是一行,值。
python slice/array運算符支持可選的step
作爲第三個值。 squareList[start:end:step]:
for o in squareList[::5]:
print(o.number)
使用5作爲步長值獲取列表中的每一個的第五項。
爲什麼不製作正方形中每一行的列表,然後將這些行放入列表中?
squareList = [rowList1, rowList2, rowList3, rowlist4, rowList5]
這樣,您可以在循環遍歷行時操縱列。
for row in SquareList:
doSomething(row[4])
您還可以使用列表理解提取列。
colList1 = [row[0] for row in squareList]
我同意你可能想要考慮其他更方便的數據結構,正如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?
'爲第五squareList [4 :: 5]:..做第五..' – falsetru 2014-08-27 15:37:38
東西或者在itertools.islice(squareList,4,None,5)中爲第五個:...' – falsetru 2014-08-27 15:38:11
我沒有看到問題標題和它的正文之間的關係。 – interjay 2014-08-27 15:38:25