Pythonで2次元リストをディープコピーする方法


以下に、いくつかのシンプルで簡単な方法とコード例を示します。

  1. copyモジュールを使用する方法:
import copy
# 元の2次元リスト
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# ディープコピーを作成
copied_list = copy.deepcopy(original_list)
# 元のリストを変更
original_list[0][0] = 99
# コピーされたリストは変更されていない
print(copied_list)  # 出力: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  1. 内包表記を使用する方法:
# 元の2次元リスト
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# ディープコピーを作成
copied_list = [row[:] for row in original_list]
# 元のリストを変更
original_list[0][0] = 99
# コピーされたリストは変更されていない
print(copied_list)  # 出力: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

いずれの方法でも、元の2次元リストを変更してもコピーには影響がありません。選択した方法を使って、ディープコピーを作成することができます。

この方法を使って、Pythonで2次元リストをディープコピーする方法を理解しました。これにより、元のリストとは独立して操作できる新しいコピーを作成することができます。

注意点としては、ディープコピーはリスト内のオブジェクトも再帰的にコピーするため、オブジェクトが大きい場合はパフォーマンスに影響する可能性があることです。必要に応じて、適切な方法を選択してください。

以上がPythonで2次元リストをディープコピーする方法の解説です。