Mengapa Mengubah Suai Satu Senarai Mempengaruhi Satu Lagi dalam Python?

DDD
Lepaskan: 2024-11-02 12:37:02
asal
837 orang telah melayarinya

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>
Salin selepas log masuk

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]
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!