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

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

Barbara Streisand
Lepaskan: 2024-11-02 04:34:02
asal
357 orang telah melayarinya

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

Indeks Senarai Bersarang

Apabila bekerja dengan senarai bersarang dalam Python, adalah penting untuk memahami konsep rujukan senarai dan cara ia mempengaruhi indeks senarai .

Senarai Rujukan

Tidak seperti kebanyakan bahasa pengaturcaraan yang melepasi pembolehubah mengikut nilai, Python menghantar senarai melalui rujukan. Ini bermakna memberikan senarai kepada pembolehubah lain mencipta rujukan kepada objek senarai asas yang sama dalam ingatan.

Indeks Senarai Bersarang

Dalam kod yang disediakan, masalah timbul daripada penggunaan pendaraban senarai. Baris some_list = 4 * [(4 * [0])] mencipta empat rujukan kepada objek senarai yang sama, bermakna perubahan kepada salah satu daripada subsenarai akan menjejaskan keempat-empatnya.

Hasil Jangkaan

Keputusan yang dijangkakan ialah:

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

Keputusan Sebenar

Keputusan sebenar ialah:

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

Penyelesaian

Untuk mengelakkan isu ini, gunakan gelung untuk membuat senarai bersarang tanpa membuat berbilang rujukan kepada senarai yang sama. Kod yang diperbetulkan ialah:

some_list = [(4 * [0]) for _ in range(4)]
Salin selepas log masuk

Gelung ini mencipta empat senarai bebas, setiap satu dengan empat sifar, memastikan gelagat yang diharapkan tercapai.

Atas ialah kandungan terperinci Mengapa Mengubah Suai Elemen Senarai Bersarang Mempengaruhi Semua Subsenarai 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan