创建游戏板时出现问题:打印太多列表

时间:2017-10-18 15:18:42

标签: python-3.x conways-game-of-life

我试图使用列表创建游戏板,但是当我打印电路板时,打印的列表太多了。

from random import randint
import pprint

class Gameboard:
    def __init__(self, rows, columns):
        self._rows = rows
        self._columns = columns
        self._board = []
        for i in range(rows):
            row = [0] * columns
            self._board.append(row)

    def drawBoard(self):
        for i in range(self._rows):
            for j in range(self._columns):
                pprint.pprint(self._board)

主程序:

from gameboard import Gameboard
import pprint

def main():
    myObject = Gameboard(7, 7)
    myObject.drawBoard()
main()

我的目标是创建一个由(在这种情况下)7个列表组成的板,列表中包含7个元素。 当我现在运行程序时,它会打印大约7 * 49个列表或其他内容。我必须更改为只打印一个包含7个列表的列表?

2 个答案:

答案 0 :(得分:0)

您可以使用内联for循环生成"[]"字符串列表,然后根据需要多次迭代该打印函数,如下所示:

import pprint

for i in range(7):
    pprint.pprint(["[]" for j in range(7)])

通过在列表中使用.join(),您还可以将列表中的每个元素连接成一个长字符串,这看起来更好。

import pprint

for i in range(7):
    pprint.pprint(' '.join(["[]" for j in range(7)]))

答案 1 :(得分:0)

保持简单:

def drawBoard(self):
    print(*self._board, sep='\n')

<强>输出

[0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0]