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

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

Patricia Arquette
リリース: 2024-12-25 00:57:17
オリジナル
403 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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