Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Senarai Bersarang Benar-Benar Tidak Boleh Berubah dalam Python?

Bagaimana untuk Mencipta Senarai Bersarang Benar-Benar Tidak Boleh Berubah dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-11-20 01:19:03970semak imbas

How to Create Truly Immutable Nested Lists in Python?

Mencipta Senarai Bersarang Tidak Boleh diubah dalam Python

Menyalin struktur data dalam Python boleh menjadi rumit, terutamanya apabila berurusan dengan senarai bersarang. Salinan cetek menggunakan [:] mengekalkan rujukan kepada elemen bersarang, menyebabkan pengubahsuaian yang tidak diingini.

Untuk menangani isu ini, apabila membuat salinan senarai bersarang, pertimbangkan teknik berikut:

  • Salinan Cetek:

Untuk senarai satu dimensi, Operator [:] mencipta salinan cetek yang merujuk elemen yang sama dalam ingatan. Mengubah suai salinan tidak menjejaskan salinan asal.

a = [1, 2]
b = a[:]
b[0] = 3  # Modifies b, but a remains unchanged
  • Salin Dalam menggunakan Menghiris:

Untuk senarai bersarang, menghiris sahaja tidak mencukupi untuk salinan dalam. Walaupun ia mencipta senarai baharu, elemen bersarang masih merujuk kepada yang asal.

a = [[1, 2], [3, 4]]
b = a[:]  # Shallow copy
b[0][0] = 5  # Modifies b and a
  • Salinan Dalam dengan Copy.deepcopy():

Fungsi copy.deepcopy() mencipta salinan dalam benar, secara rekursif mencipta objek baharu untuk semua peringkat senarai bersarang. Perubahan yang dibuat pada salinan tidak menjejaskan salinan asal.

import copy
b = copy.deepcopy(a)
b[0][0] = 6  # Modifies b, but a remains untouched

Dengan menggunakan teknik ini, anda boleh membuat senarai bersarang tidak berubah yang menyediakan pengasingan, menghalang pengubahsuaian yang tidak dijangka pada struktur data asal.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Senarai Bersarang Benar-Benar Tidak Boleh Berubah dalam Python?. 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