Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Pengubahsuaian Pembolehubah Senarai dalam Python Juga Mempengaruhi Pembolehubah Lain yang Ditugaskan kepadanya?

Mengapa Pengubahsuaian Pembolehubah Senarai dalam Python Juga Mempengaruhi Pembolehubah Lain yang Ditugaskan kepadanya?

Patricia Arquette
Lepaskan: 2024-11-02 18:55:30
asal
811 orang telah melayarinya

Why Does Modifying a List Variable in Python Also Affect Another Variable Assigned to It?

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

Selepas melaksanakan kod di atas, kedua-dua v dan vec akan mengandungi nilai berikut:

[0, 0, 0, 0, 0, 5, 0, 0, 0]
Salin selepas log masuk

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan