0402: 入れ子リストのコピー¶
問題¶
文字列の入れ子リスト board をコピーする関数 copy_board(board) を実装してください。
返り値は、board と同じ内容を持つ新しいリストです。
外側のリストだけでなく、各行のリストも新しく作ってください。
制約¶
boardは文字列のリストのリストです。- 行の長さはそろっていなくてもかまいません。
- 返り値の外側のリストは、入力の外側のリストと同一オブジェクトであってはいけません。
- 返り値の各行は、対応する入力の行と同一オブジェクトであってはいけません。
- 入力を変更してはいけません。
例¶
>>> board = [["x", "."], [".", "o"]]
>>> copied = copy_board(board)
>>> copied == board
True
>>> copied is board
False
>>> copied[0] is board[0]
False
>>> copied[0][0] = "o"
>>> board
[['x', '.'], ['.', 'o']]
発展¶
3次元の入れ子リストにも対応する再帰的なコピーを書いてください。
参考¶
- 『Python Distilled』第4章「オブジェクトの同一性と型」
- 『Python Distilled』第4章「参照とコピー」