ホームページ >バックエンド開発 >Python チュートリアル >Python リストの完全に独立したコピーを作成するには?

Python リストの完全に独立したコピーを作成するには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-25 00:57:17366ブラウズ

How to Create Truly Independent Copies of Python Lists?

Python リストの変更不可能なクローンの作成

new_list を my_list に割り当てる場合、実際には個別のリストが作成されるわけではありません。代わりに、これは同じリストを指す単なる参照であり、new_list の変更が my_list に反映されます。

リストを効果的にコピーする

予期しないリストの変更を回避するには、リストの複製にはいくつかのメソッドが存在します:

  • list.copy()メソッド: (Python 3.3 ):
new_list = old_list.copy()
  • スライス:
new_list = old_list[:]
  • リスト()コンストラクター:
new_list = list(old_list)
  • copy.copy() 関数:
import copy
new_list = copy.copy(old_list)
  • copy.deepcopy() 関数: (ネストされた要素をコピーします)再帰的に)
import copy
new_list = copy.deepcopy(old_list)

例:

class Foo:
    def __init__(self, val):
        self.val = val

foo = Foo(1)

a = ['foo', foo]
b = a.copy()
c = a[:]
d = list(a)
e = copy.copy(a)
f = copy.deepcopy(a)

a.append('baz')
foo.val = 5

print(f'original: {a}\nlist.copy(): {b}\nslice: {c}\nlist(): {d}\ncopy: {e}\ndeepcopy: {f}')

出力:

original: ['foo', Foo(5), 'baz']
list.copy(): ['foo', Foo(5)]
slice: ['foo', Foo(5)]
list(): ['foo', Foo(5)]
copy: ['foo', Foo(5)]
deepcopy: ['foo', Foo(1)]

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。