コンテンツにスキップ

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章「参照とコピー」