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>
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>
Bercanggah dengan output sebenar:
<code class="python">[0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1]</code>
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>
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!