2 次元リストとして表される Python 2.7 の 5x5 グリッドであるゲームボードを構築しようとしています。board = [["O"]*cols]*rows
(列と行はすでに5であると宣言されています)と書いてみましたが、インデックスの値を編集しようとすると、行全体が変更されます。例えば
cols = 5
rows = 5
board = [["O"]*cols]*rows
これは次のように表示されます:
[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]
今、次のようなインデックスの値を変更しようとすると:
board[1][1] = "X"
それは印刷します:
[['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O']]
行 1 列 1 の値のみを変更したい。
また、次のことも試しました。
board = []
for i in xrange(5):
board.append(["O"]*cols)
これは私が望むように機能します。私が理解したいのは、違いは何ですか?