ホームページ > バックエンド開発 > Python チュートリアル > Python でリストを適切に複製し、意図しない変更を回避するにはどうすればよいですか?

Python でリストを適切に複製し、意図しない変更を回避するにはどうすればよいですか?

DDD
リリース: 2024-12-21 04:28:11
オリジナル
456 人が閲覧しました

How to Properly Clone Lists in Python and Avoid Unintended Modifications?

Python でリストを複製する: 予期しない変更を防ぐ方法

既存のリストに新しい変数を代入する (例: new_list = my_list) Python は別のリストを作成せず、参照を元のリストにコピーするだけです。これは、new_list に加えられた変更が my_list に反映され、その逆も同様であることを意味します。

リストの予期しない動作の理由:

この動作は、Python がメモリ参照を使用するために発生します。リストのようなオブジェクト。新しい変数をリストに割り当てると、その変数はリストを複製するのではなく、同じ基礎となるデータ構造を指します。したがって、1 つの参照に対する変更は、同じデータ構造へのすべての参照に影響します。

予期せぬ変更を防ぐためのクローン作成オプション:

リストの完全に独立したコピーを作成するには、いくつか持っていますねoptions:

  1. list.copy(): 組み込みの list.copy() メソッドは、元のリストのコピーである新しいリストを返します。
  2. スライス: リストでスライス構文 (new_list = old_list[:]) を使用すると、要素がリストからコピーされます。元のリストを新しいリストに変換します。
  3. list() コンストラクター: list() コンストラクターを使用して、既存のリストから新しいリストを作成できます: new_list = list(old_list).
  4. copy.copy(): copy モジュールの copy.copy() 関数は、リストの浅いコピーを作成します。ネストされたリストは元のリストと参照を共有します。
  5. copy.deepcopy(): copy モジュールの copy.deepcopy() 関数はリストのディープ コピーを作成し、コピーします。ネストされたすべての要素も同様です。これは最も完全なオプションですが、最も遅いオプションでもあります。

例:

my_list = [1, 2, 3]
new_list = my_list.copy()
new_list.append(4)
print(my_list)  # Output: [1, 2, 3] (unchanged)
ログイン後にコピー

この例では、new_list は my_list の別個の独立したコピーです。したがって、要素を new_list に追加しても my_list には影響しません。

以上がPython でリストを適切に複製し、意図しない変更を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート