Python Append() vs. = Operator dalam Senarai: Memahami Percanggahan Hasil
Dalam Python, kaedah append() dan = operator boleh digunakan untuk mengubah suai senarai. Walau bagaimanapun, operasi ini kadangkala menghasilkan hasil yang tidak dijangka, terutamanya apabila berurusan dengan senarai bersarang. Artikel ini bertujuan untuk menerangkan sebab kedua-dua pendekatan berkelakuan berbeza.
The = Operator
The = operator menambah elemen senarai di sebelah kanan pada senarai di sebelah kiri. Senarai asal diubah suai, dan senarai dikemas kini dikembalikan. Contohnya:
<code class="python">c = [1, 2, 3] c += c # This is equivalent to c.extend(c) print(c) # Output: [1, 2, 3, 1, 2, 3]</code>
Dalam kes ini, operator = menggabungkan elemen c dengan c, menghasilkan senarai dengan dua kali ganda saiz asal.
Apend() Kaedah
Kaedah append() memasukkan objek yang ditentukan ke dalam senarai pada penghujung. Berbeza dengan operator =, kaedah append() tidak menggabungkan elemen objek tetapi sebaliknya menambahkannya sebagai rujukan kepada senarai asal. Contohnya:
<code class="python">c = [1, 2, 3] c.append(c) # This is equivalent to c.insert(len(c), c) print(c) # Output: [1, 2, 3, [...]]</code>
Dalam kes ini, kaedah append() menambah rujukan kepada senarai c pada penghujung c. Ini menghasilkan rujukan bulat, di mana c[-1] dan c merujuk kepada objek yang sama. Apabila mencetak c, anda akan mendapat output [1, 2, 3, [...]], di mana [...] mewakili rekursi tak terhingga.
Mengapa Perbezaannya?
Perbezaan utama antara = operator dan kaedah append() ialah yang pertama bertindak ke atas elemen objek yang ditentukan, manakala yang kedua merawat objek secara keseluruhan. Apabila menambah senarai menggunakan =, Python menggabungkan elemen, yang secara berkesan menyalin setiap elemen ke dalam senarai baharu. Sebaliknya, apabila menambah senarai menggunakan append(), Python hanya menambah rujukan kepada senarai asal, yang boleh membawa kepada rekursi tak terhingga jika senarai mengandungi rujukan kepada dirinya sendiri.
Alternatif
Jika niat anda adalah untuk menggabungkan dua senarai, anda boleh menggunakan kaedah extend() dan bukannya operator =. Kaedah extend() berfungsi sama dengan = tetapi tidak mengubah suai senarai asal. Contohnya:
<code class="python">c = [1, 2, 3] c.extend(c) print(c) # Output: [1, 2, 3, 1, 2, 3]</code>
Atas ialah kandungan terperinci Python Append() vs. = pada Senarai: Mengapa Mereka Memberikan Hasil Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!