Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencipta Salinan Sebenar Senarai Python untuk Mengelakkan Pengubahsuaian Tidak Disengajakan?

Bagaimanakah Saya Boleh Mencipta Salinan Sebenar Senarai Python untuk Mengelakkan Pengubahsuaian Tidak Disengajakan?

Linda Hamilton
Lepaskan: 2024-12-21 02:27:09
asal
720 orang telah melayarinya

How Can I Create a True Copy of a Python List to Avoid Unintentional Modifications?

Senarai Pengklonan untuk Tugasan Tidak Diubah: Panduan Komprehensif

Dalam Python, memberikan senarai kepada pembolehubah baharu menggunakan new_list = my_list isn't salinan tulen. Sebaliknya, rujukan kepada senarai asal dibuat. Akibatnya, pengubahsuaian pada senarai baharu juga mengubah senarai asal.

Untuk mengelakkan perubahan yang tidak dijangka ini, adalah penting untuk mengklon atau menyalin senarai. Berikut ialah beberapa pendekatan:

  • Senarai terbina dalam.copy() Kaedah: (Python 3.3 dan nanti)
new_list = old_list.copy()
Salin selepas log masuk
  • Menghiris:
new_list = old_list[:]
Salin selepas log masuk
  • Senarai terbina dalam() Pembina:
new_list = list(old_list)
Salin selepas log masuk
  • Generik copy.copy():
import copy
new_list = copy.copy(old_list)
Salin selepas log masuk
  • Salinan generik.deepcopy(): (Salinan bersarang elemen)
import copy
new_list = copy.deepcopy(old_list)
Salin selepas log masuk

Pertimbangkan sampel dengan senarai bersarang dan contoh:

class Foo(object):
    def __init__(self, val):
        self.val = val

    def __repr__(self):
        return f'Foo({self.val!r})'

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')  # Modify original list
foo.val = 5  # Modify nested instance

print(f'original: {a}\nlist.copy(): {b}\nslice: {c}\nlist(): {d}\ncopy: {e}\ndeepcopy: {f}')
Salin selepas log masuk

Output:

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)]
Salin selepas log masuk

Seperti yang anda lihat, manakala senarai asal dan contoh bersarang berubah, hanya salinan dalam (f) telah menyalinnya dengan tepat, mengekalkan sebelumnya nilai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Salinan Sebenar Senarai Python untuk Mengelakkan Pengubahsuaian Tidak Disengajakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan