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>
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>
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!