Rumah > Artikel > pembangunan bahagian belakang > Mengapa Pengubahsuaian Pembolehubah Senarai dalam Python Juga Mempengaruhi Pembolehubah Lain yang Ditugaskan kepadanya?
Mutasi Senarai Tidak Dijangka: Memahami Kesan Rujukan
Dalam Python, pembolehubah senarai mewakili rujukan kepada tatasusunan yang disimpan dalam ingatan. Apabila menetapkan satu pembolehubah senarai kepada yang lain (cth., vec = v), apa yang sebenarnya berlaku ialah alamat tatasusunan dihantar dan bukannya menyalin tatasusunan itu sendiri.
Ini bermakna sebarang pengubahsuaian yang dibuat pada satu senarai akan juga menjejaskan senarai lain yang menunjuk ke alamat memori yang sama. Sebagai contoh, pertimbangkan kod berikut:
<code class="python">v = [0,0,0,0,0,0,0,0,0] vec = v vec[5] = 5</code>
Selepas melaksanakan kod di atas, kedua-dua v dan vec akan mengandungi nilai berikut:
[0, 0, 0, 0, 0, 5, 0, 0, 0]
Ini berlaku kerana vec dan v kedua-duanya merujuk tatasusunan yang sama dalam ingatan. Apabila nilai pada indeks 5 dalam vec diubah suai kepada 5, perubahan itu bukan sahaja dicerminkan dalam vec, tetapi juga dalam v, kerana kedua-dua pembolehubah menghala ke tatasusunan asas yang sama.
Untuk mencipta salinan sebenar senarai , gunakan kaedah copy() atau pembina list() dengan senarai asal sebagai hujah, seperti yang ditunjukkan di bawah:
<code class="python">vec = v.copy() vec = list(v)</code>
Atas ialah kandungan terperinci Mengapa Pengubahsuaian Pembolehubah Senarai dalam Python Juga Mempengaruhi Pembolehubah Lain yang Ditugaskan kepadanya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!