Apabila bekerja dengan senarai dalam Python, tingkah laku yang tidak dijangka mungkin timbul. Mari kita fahami mengapa menukar satu senarai secara tidak dijangka menjejaskan senarai yang lain.
Masalah:
Pertimbangkan kod Python berikut:
<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0] vec = v # Assignment by reference vec[5] = 5</code>
Selepas kod ini dilaksanakan, kedua-dua v dan vec menunjukkan nilai yang diubah suai pada indeks 5:
>>> print(vec) [0, 0, 0, 0, 0, 5, 0, 0, 0] >>> print(v) [0, 0, 0, 0, 0, 5, 0, 0, 0]
Mengapa v berubah walaupun ia tidak diubah suai secara eksplisit?
Memahami Isu:
Dalam Python, apabila anda menetapkan senarai kepada pembolehubah baharu, anda tidak membuat salinan; sebaliknya, anda sedang mencipta rujukan. Ini bermakna kedua-dua v dan vec menghala ke objek senarai asas yang sama dalam ingatan.
Penyelesaian:
Untuk mempunyai dua senarai berasingan dengan nilai yang sama, anda perlu mencipta salinan menggunakan pembina list():
<code class="python">vec = list(v) # Creates a copy</code>
Kini, apabila anda membuat perubahan pada vec, v akan kekal tidak terjejas.
Atas ialah kandungan terperinci Mengapa Mengubah Suai Satu Senarai Mempengaruhi Satu Lagi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!