私は擬似コードを与えられました:
for i= 1 to 3
for j = 1 to 3
board [i] [j] = 0
next j
next i
これをPythonでどのように作成しますか?
(アイデアは、forループを使用してすべての要素を0に設定した3 x 3の配列を作成することです)。
本当にfor
-loopsを使用したい場合:
>>> board = []
>>> for i in range(3):
... board.append([])
... for j in range(3):
... board[i].append(0)
...
>>> board
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
しかし、Pythonはこれを簡単にします:
>>> board = [[0]*3 for _ in range(3)]
>>> board
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
arr=[[0,0,0] for i in range(3)] # create a list with 3 sublists containing [0,0,0]
arr
Out[1]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
4つの0を含む5つのサブリストを含むリストが必要な場合:
In [29]: arr=[[0,0,0,0] for i in range(5)]
In [30]: arr
Out[30]:
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
範囲は必要なサブリストの数を指定します。範囲は0から始まるため、範囲4は0,1,2,3,4
です。あなたに5つの[0,0,0,0]
を与えます
リスト内包表記の使用は、次の場合と同じです。
arr=[]
for i in range(5):
arr.append([0,0,0,0])
arr
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
与えられた擬似コードのスタイルを使用するか、単にpython 1つのライナーを使用することができます
chess_board = [[x] * 3 for _ in range(y)]->リスト内包
または、Javaなどの他の言語のプレーンループスタイルを使用することもできます。見た目がずっときれいできれいなワンライナーが好きです。
numpyにはこれのための何かがあります:
numpy.zeros((3,3))
擬似コードに近いものが必要な場合:
board = []
for i in range(3):
board.append([])
for j in range(3):
board[i].append(0)