为列表中的每个第五个对象执行某些操作

时间:2014-08-27 15:35:49

标签: python list object for-loop

好的,所以我有一个代码,我需要打印一个5x5正方形的游戏板。所有的方块都在squareList,这是一个列表(哦,你不说)。方块基于具有变量number的对象,该变量是我想要打印的值。我怎么能这样做?

编辑:我想要这样做的原因是因为我希望每隔五个方格开始一个新行,这样我就可以得到一块板,而不是一条线。

3 个答案:

答案 0 :(得分:2)

python切片/数组运算符支持可选的step作为第三个值。 squareList[start:end:step]:

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

使用5作为步骤值来获取列表中的每个第五个条目。

答案 1 :(得分:0)

为什么不为方块中的每一行创建列表,然后将这些行放入列表?

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

这样,您可以在循环遍历行时操作列。

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

您还可以使用列表推导来提取列。

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

答案 2 :(得分: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会计入列表中的每个元素,% or "modulo" operator会在你除以5时得到剩余部分,允许你在循环中每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?

相关问题