Python リストの完全に独立したコピーを作成するにはどうすればよいですか?

DDD
リリース: 2024-11-08 13:10:01
オリジナル
770 人が閲覧しました

How Do I Create a Truly Independent Copy of a Python List?

Python: リストのコピーの詳細

Python でリストを操作する場合、コピーの動作を理解することが不可欠です。質問が強調しているように、一見独立しているように見えるコピーが元のリストに影響を及ぼし、予期しない動作を引き起こす可能性があります。

代入の落とし穴

問題の核心は Python の代入にありますセマンティクス。 Java などの言語とは異なり、Python は実際の値ではなく変数への参照を割り当てます。提供された例では:

org_list = ['y', 'c', 'gdp', 'cap']
copy_list = org_list
ログイン後にコピー

copy_list にはリストの独自のコピーが含まれていません。代わりに、org_list と同じ基になるリストを指します。一方のリストへの変更は、もう一方のリストにも反映されます。

浅いコピーと深いコピー

真に独立したコピーを作成するために、Python は 2 つのアプローチを提供します。

  • 浅いコピー: 新しいリストを作成しますが、リストの要素を浅くコピーします。元のリスト。コピーされたリストのネストされた要素に加えられた変更は、元のリストに引き続き影響します。例:
copy_list = list(org_list)
copy_list[1] = 'a'
print(org_list)  # Output: ['y', 'a', 'gdp', 'cap']
ログイン後にコピー
  • ディープコピー: 元のリストから独立した新しいリストを作成します。コピーされたリストまたはそのネストされた要素を変更しても、元のリストには影響しません。例:
import copy
copy_list = copy.deepcopy(org_list)
copy_list[1] = 'a'
print(org_list)  # Output: ['y', 'c', 'gdp', 'cap']
ログイン後にコピー

追加の考慮事項

パンダの DataFrame の場合、copy() メソッドまたは copy(deep=True) メソッドを使用して独立したデータフレームを作成できます。コピー。ただし、複雑なオブジェクトのディープ コピーは、必要でない場合に計算コストが高くなる可能性があることに注意してください。

結論として、Python での参照とコピーの違いを理解することは、リストと複雑なオブジェクトを効果的に操作するために重要です。必要に応じて浅いコピーまたは深いコピーを活用することで、データの整合性を確保し、コピー変更時の予期せぬ結果を回避できます。

以上がPython リストの完全に独立したコピーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!