Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mengklon Senarai dengan Betul dalam Python dan Mengelakkan Pengubahsuaian Tidak Dijangka?

Bagaimana Mengklon Senarai dengan Betul dalam Python dan Mengelakkan Pengubahsuaian Tidak Dijangka?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 22:16:16135semak imbas

How to Properly Clone Lists in Python and Avoid Unexpected Modifications?

Senarai Diklon: Memelihara Integriti dalam Python

Dalam Python, memberikan pembolehubah baharu kepada senarai sedia ada menghasilkan salinan cetek, menjadikan anda terdedah kepada pengubahsuaian senarai yang tidak dijangka. Mari kita jelaskan sebab tingkah laku ini berlaku dan teroka kaedah pengklonan yang berkesan untuk memastikan kebolehubahan senarai.

Mengapa tugasan tidak membawa kepada pengklonan:

Apabila anda melaksanakan new_list = my_list, anda menetapkan penunjuk kepada objek senarai yang sama kepada new_list. Kedua-dua pembolehubah merujuk kepada senarai asal, menjadikan sebarang pengubahsuaian berikutnya kelihatan dalam kedua-dua new_list dan my_list.

Menyalin senarai dengan berkesan:

Untuk mencipta klon tulen, anda perlu beberapa pendekatan:

1. Menggunakan list.copy():

Kaedah ini, yang diperkenalkan dalam Python 3.3, mencipta salinan senarai yang berbeza.

**2. Menghiris senarai dengan [:]:**

Sintaks ini mencipta senarai baharu dengan elemen yang sama seperti yang asal.

3. Menggunakan pembina senarai (list()):

Ini mencipta senarai baharu daripada lelaran sedia ada, seperti senarai lain.

4. Menggunakan copy.copy():

Fungsi terbina dalam ini menyediakan salinan cetek asas, mencukupi untuk kebanyakan kes penggunaan.

5. Menggunakan copy.deepcopy():

Kaedah yang lebih komprehensif ini mencipta salinan dalam, di mana objek bersarang turut diklon.

Contoh:

Mari kita bandingkan keputusan ini kaedah:

import copy

my_list = ['foo', 'bar']

new_list = my_list.copy()
sliced_list = my_list[:]
list_constructor_list = list(my_list)
shallow_copy_list = copy.copy(my_list)
deep_copy_list = copy.deepcopy(my_list)

my_list.append('baz')

print(f'Original list: {my_list}')
print(f'Copied list: {new_list}')
print(f'Sliced list: {sliced_list}')
print(f'List constructed from iterator: {list_constructor_list}')
print(f'Shallow copy: {shallow_copy_list}')
print(f'Deep copy: {deep_copy_list}')

Output:

Original list: ['foo', 'bar', 'baz']
Copied list: ['foo', 'bar']
Sliced list: ['foo', 'bar']
List constructed from iterator: ['foo', 'bar']
Shallow copy: ['foo', 'bar']
Deep copy: ['foo', 'bar']

Seperti yang terbukti daripada output, my_list diubah selepas menambahkan 'baz', manakala senarai klon kekal tidak diubah suai.

Atas ialah kandungan terperinci Bagaimana Mengklon Senarai dengan Betul dalam Python dan Mengelakkan Pengubahsuaian Tidak Dijangka?. 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