Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencipta Salinan Senarai Python yang Benar-benar Bebas?

Bagaimana untuk Mencipta Salinan Senarai Python yang Benar-benar Bebas?

Patricia Arquette
Lepaskan: 2024-12-25 00:57:17
asal
356 orang telah melayarinya

How to Create Truly Independent Copies of Python Lists?

Mencipta Klon Senarai Python yang Tidak Boleh diubah suai

Apabila menugaskan new_list kepada my_list, ini bukan penciptaan senarai berasingan yang sebenar. Sebaliknya, ia hanyalah rujukan yang menunjuk kepada senarai yang sama, menyebabkan sebarang perubahan dalam new_list ditunjukkan dalam my_list.

Menyalin Senarai Dengan Berkesan

Untuk mengelakkan pengubahsuaian senarai yang tidak dijangka, beberapa kaedah wujud untuk senarai pengklonan:

  • list.copy() Kaedah: (Python 3.3 ):
new_list = old_list.copy()
Salin selepas log masuk
  • Menghiris:
new_list = old_list[:]
Salin selepas log masuk
  • senarai() Pembina:
new_list = list(old_list)
Salin selepas log masuk
  • copy.copy() Fungsi:
import copy
new_list = copy.copy(old_list)
Salin selepas log masuk
  • copy.deepcopy() Fungsi: (Menyalin elemen bersarang secara rekursif)
import copy
new_list = copy.deepcopy(old_list)
Salin selepas log masuk

Contoh:

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

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')
foo.val = 5

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

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Senarai Python yang Benar-benar Bebas?. 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