Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Mengubah Suai Satu Senarai Mempengaruhi Satu Lagi dalam Python?

Mengapa Mengubah Suai Satu Senarai Mempengaruhi Satu Lagi dalam Python?

DDD
DDDasal
2024-11-02 12:37:02836semak imbas

Why Does Modifying One List Affect Another in Python?

Senarai Terpaut Tanpa Jangka dalam Python

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!

Kenyataan:
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