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() 関数は、真のディープ コピーを作成し、ネストされたリストのすべてのレベルに対して新しいオブジェクトを再帰的に作成します。コピーに加えられた変更は、元のファイルには影響しません。
import copy b = copy.deepcopy(a) b[0][0] = 6 # Modifies b, but a remains untouched
これらの手法を使用すると、分離を提供する不変のネストされたリストを作成でき、元のデータ構造への予期しない変更を防ぐことができます。
以上がPython で真に不変の入れ子リストを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。