好的,所以我有一个代码,我需要用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