Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa memberikan senarai kepada pembolehubah baharu dalam Python tidak membuat salinan berasingan?

Mengapa memberikan senarai kepada pembolehubah baharu dalam Python tidak membuat salinan berasingan?

Linda Hamilton
Lepaskan: 2024-11-03 07:43:30
asal
573 orang telah melayarinya

Why does assigning a list to a new variable in Python not create a separate copy?

Mutasi Senarai Tidak Dijangka

Apabila mencipta senarai seperti v = [0,0,0,0,0,0,0,0 ,0], anda mungkin menganggap bahawa memberikan senarai baharu kepada pembolehubah mencipta rujukan berasingan. Walau bagaimanapun, kod seperti berikut boleh menunjukkan tingkah laku yang tidak dijangka:

<code class="python">vec = v
vec[5] = 5</code>
Salin selepas log masuk

Kedua-dua vec dan v kini mengandungi nilai 5 pada indeks 5. Mengapa ini berlaku?

Tugasan Rujukan

Dalam Python, senarai ialah objek boleh ubah. Menetapkan vec = v tidak mencipta salinan baharu senarai. Sebaliknya, ia memberikan rujukan kepada v. Kedua-dua vec dan v menghala ke objek senarai asas yang sama dalam ingatan.

Sebarang pengubahsuaian yang dibuat sama ada pada vec atau v akan menjejaskan senarai asal kerana ia adalah senarai yang sama. Inilah sebabnya apabila vec[5] ditukar, v juga berubah.

Penyelesaian

Untuk mencipta salinan senarai yang berasingan, gunakan fungsi list():

<code class="python">vec = list(v)</code>
Salin selepas log masuk

Ini mencipta objek senarai baharu yang mengandungi salinan elemen daripada v. Sebarang perubahan yang dibuat kepada vec tidak akan menjejaskan v, dan sebaliknya.

Atas ialah kandungan terperinci Mengapa memberikan senarai kepada pembolehubah baharu dalam Python tidak membuat salinan berasingan?. 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