Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Mengemas kini Salinan Cetek Kamus Python Mengubah Yang Asal?

Mengapakah Mengemas kini Salinan Cetek Kamus Python Mengubah Yang Asal?

Linda Hamilton
Linda Hamiltonasal
2024-11-24 06:37:10698semak imbas

Why Doesn't Updating a Shallow Copy of a Python Dictionary Change the Original?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn