#Python でリストをコピーするにはどうすればよいですか?
これはとても簡単なことではありませんか? new_list = old_list にしたほうが良いのではありませんか?
これは実際に実現可能ですか?例を挙げてみましょう:
これは素晴らしいことだと思いませんか? 元のリストが変更されると、新しくコピーされたリストも変更されます。私が望む結果ではありません。では、なぜこのようなことが起こるのでしょうか?
Python で代入 (=) を使用すると、実際には新しい変数への参照を指しているだけであることがわかりました。簡単に言うと、a=b を実行するときの実際の操作は、次のメモリ アドレスを割り当てることです。 a. b が与えられると、この時点では、a と b は同じメモリ アドレスを指しますが、b に対して新しいメモリ アドレスは開かれないため、メモリ アドレスの値が変更されると、それに応じて b の値も変更されます。
では、それを正しくコピーするにはどうすればよいでしょうか?リストに不変データが含まれている場合は、次のメソッドを使用できます:
メソッドの 1 つをランダムに抽出して検証できます:
ご覧のとおり、今回コピーしたリストはすべて独立しており、元のリストにはまったく影響を受けません。リストが不変のデータ型である場合に使用できます。 現時点では、引き続き反例を示して説明します:
この時点で、これは代入 (=) を使用した結果に似ているように見えますが、異なることがわかります。実際、上記のコピー リストを使用すると、浅いコピーが実装されます。浅いコピーは実際には代入よりも少し高度で、リスト内のすべての値を新しいオブジェクトにコピーしますが、リスト内の値が変数データ (リスト、辞書、関数、クラス、など)、引用は 1 つだけコピーされます。
ディープコピー
では、コピーされたリストに変数データが含まれている場合、どのようにコピーすればよいでしょうか?それはとても簡単です。浅いコピーがあるところには、深いコピーもあります。深いコピーとは、すべてを新しいオブジェクトにコピーすることを意味し、すべての心配から解放されます。
#
以上がPythonでリストのクローンを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。