Mengapa Shallow Copy Dictionary Tidak Mengemas kini Asal
Apabila berurusan dengan struktur data, memahami nuansa penyalinan adalah penting. Python menawarkan dua kaedah penyalinan utama: penyalinan cetek dan mendalam. Artikel ini menyelidiki perbezaan dalam teknik ini, khususnya mengkaji sebab mengemas kini salinan cetek tidak memberi kesan kepada kamus asal.
Salinan Cetek Python
dict.copy() melakukan salinan cetek kamus, bermakna ia mencipta rujukan baharu kepada kandungan yang sama. Kandungan tidak diduplikasi mengikut nilai tetapi sebaliknya berkongsi rujukan memori yang sama.
Pertimbangkan contoh:
original = dict(a=1, b=2) new = original.copy() new.update({'c': 3})
Selepas salinan cetek, sebarang perubahan yang dibuat pada rujukan baharu (baharu) akan ubah kamus asal (asal) kerana mereka menunjuk kepada data asas yang sama. Dalam contoh, menambah 'c': 3 pada salinan cetek juga mengemas kini kamus asal.
Memahami Deep Copy vs. Shallow Copy
Di mana penyalinan cetek hanya mencipta rujukan baharu kepada data sedia ada, penyalinan mendalam mencipta objek baharu sepenuhnya. Kandungan diduplikasi secara rekursif. Ini memastikan bahawa sebarang pengubahsuaian yang dibuat pada rujukan baharu tidak menjejaskan rujukan asal.
Menggunakan copy.deepcopy() melakukan salinan dalam. Dalam kes ini, sebarang perubahan yang dibuat pada rujukan baharu (c) tidak akan memberi kesan kepada kamus asal (a).
Kesimpulan
Penyalinan cetek dalam Python melibatkan penciptaan baharu rujukan kepada data sedia ada, manakala penyalinan mendalam mencipta objek baharu sepenuhnya dengan kandungan pendua. Memahami perbezaan ini adalah penting apabila berurusan dengan struktur data yang kompleks, kerana ia menentukan cara pengubahsuaian pada satu objek memberi kesan kepada yang lain.
Atas ialah kandungan terperinci Mengapakah Mengemas kini Salinan Cetek Kamus Python Mengubah Yang Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!