Python で真に不変の入れ子リストを作成するには?

Linda Hamilton
リリース: 2024-11-20 01:19:03
オリジナル
969 人が閲覧しました

How to Create Truly Immutable Nested Lists in Python?

Python での不変のネストされたリストの作成

Python でのデータ構造のコピーは、特にネストされたリストを扱う場合に難しい場合があります。 [:] を使用した浅いコピーでは、ネストされた要素への参照が保持され、不要な変更が発生します。

この問題に対処するには、ネストされたリストのコピーを作成するときに、次の手法を検討してください:

  • 浅いコピー:

1 次元リストの場合、[:] 演算子はメモリ内の同じ要素を参照する浅いコピーを作成します。コピーを変更しても、オリジナルには影響しません。

a = [1, 2]
b = a[:]
b[0] = 3  # Modifies b, but a remains unchanged
ログイン後にコピー
  • スライスを使用したディープ コピー:

ネストされたリストの場合、スライスだけでは不十分です。深いコピー。新しいリストを作成する間、ネストされた要素は元の要素への参照のままです。

a = [[1, 2], [3, 4]]
b = a[:]  # Shallow copy
b[0][0] = 5  # Modifies b and a
ログイン後にコピー
  • Copy.deepcopy() によるディープ コピー:

copy.deepcopy() 関数は、真のディープ コピーを作成し、ネストされたリストのすべてのレベルに対して新しいオブジェクトを再帰的に作成します。コピーに加えられた変更は、元のファイルには影響しません。

import copy
b = copy.deepcopy(a)
b[0][0] = 6  # Modifies b, but a remains untouched
ログイン後にコピー

これらの手法を使用すると、分離を提供する不変のネストされたリストを作成でき、元のデータ構造への予期しない変更を防ぐことができます。

以上がPython で真に不変の入れ子リストを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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