Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Mengubah Suai Elemen Senarai Bersarang dalam Python Mempengaruhi Semua Salinannya?

Mengapa Mengubah Suai Elemen Senarai Bersarang dalam Python Mempengaruhi Semua Salinannya?

Mary-Kate Olsen
Lepaskan: 2024-10-31 01:44:29
asal
581 orang telah melayarinya

Why Does Modifying a Nested List Element in Python Affect All Its Copies?

Indeks Senarai Bersarang: Mentafsir Gelagat Berasaskan Rujukan Python

Dalam Python, senarai dianggap sebagai struktur data berasaskan rujukan yang boleh berubah. Ciri ini menimbulkan kemungkinan perangkap semasa bekerja dengan senarai bersarang, seperti yang ditunjukkan oleh coretan kod berikut:

<code class="python">some_list = 4 * [(4 * [0])]</code>
Salin selepas log masuk

Mencipta senarai bersarang seperti ini menghasilkan empat rujukan kepada senarai asas yang sama. Akibatnya, apa-apa pengubahsuaian yang dibuat pada salah satu rujukan memberi kesan kepada semua rujukan yang lain disebabkan sifat perkongsian mereka. Tingkah laku ini jelas dalam kod yang disediakan, di mana output yang dijangkakan:

<code class="python">[0, 0, 0, 0]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]</code>
Salin selepas log masuk

Bercanggah dengan output sebenar:

<code class="python">[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]</code>
Salin selepas log masuk

Untuk mengelakkan gotcha ini, disyorkan untuk membuat senarai baharu contoh untuk setiap subsenarai menggunakan pendekatan pemahaman:

<code class="python">some_list = [(4 * [0]) for _ in range(4)]</code>
Salin selepas log masuk

Pendekatan ini memastikan setiap subsenarai adalah bebas, menyelesaikan isu dan menghasilkan output yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Mengubah Suai Elemen Senarai Bersarang dalam Python Mempengaruhi Semua Salinannya?. 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