Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah pengendali ` =` Python dan kaedah `append()` menghasilkan hasil yang berbeza apabila bekerja dengan senarai?

Mengapakah pengendali ` =` Python dan kaedah `append()` menghasilkan hasil yang berbeza apabila bekerja dengan senarai?

Patricia Arquette
Lepaskan: 2024-10-29 08:30:04
asal
910 orang telah melayarinya

Why does Python's ` =` operator and the `append()` method produce different results when working with lists?

Python's append() vs. the = Operator for Lists: Mengapa Keputusan Berbeza?

Perbezaan yang jelas antara kaedah append() dan operator = apabila digunakan dengan senarai boleh membingungkan. Untuk menjelaskan perbezaan ini, mari kita mendalami mekanisme asas operasi ini.

The = Operator

Apabila = operator digunakan pada senarai, ia menambahkan dengan berkesan senarai di sebelah kanan senarai asal. Walau bagaimanapun, operasi ini tidak mencipta objek senarai baharu; sebaliknya, ia mengubah suai senarai sedia ada.

Kaedah append()

Sebaliknya, kaedah append() secara eksplisit memasukkan objek yang disediakan sebagai hujah kepada penghujung senarai asal. Sisipan ini menghasilkan rujukan kepada contoh senarai yang sama disimpan dalam elemen terakhir senarai asal. Akibatnya, memanggil append() secara rekursif pada senarai membawa kepada gelung tak terhingga.

Ilustrasi Jelas

Pertimbangkan coretan kod berikut:

<code class="python">c = [1, 2, 3]
c += c
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
Salin selepas log masuk

Dalam contoh ini, operator = menambahkan elemen c (iaitu, [1, 2, 3]) kepada c, menggandakan panjangnya dengan berkesan.

Sekarang, mari ubah suai kod sedikit:

<code class="python">c = [1, 2, 3]
c.append(c)
print(c)  # Output: [1, 2, 3, [...]]</code>
Salin selepas log masuk

Di sini, kaedah append() memasukkan keseluruhan senarai c sebagai elemen terakhir. Rekursi ini menghasilkan gelung tak terhingga kerana c[-1] menjadi sama dengan c itu sendiri.

Pendekatan Alternatif

Jika niat anda adalah untuk menggabungkan senarai, anda boleh gunakan kaedah extend() dan bukannya operator =. Kaedah extend(), seperti , menambahkan elemen senarai lain (atau boleh lelar) pada senarai asal, dengan itu mengubah suainya pada tempatnya.

Kesimpulan

The perbezaan utama antara append() dan operator = terletak pada tingkah laku masing-masing. Operator = menggabungkan elemen senarai sebelah kanan ke senarai asal, manakala append() memasukkan senarai itu sendiri sebagai elemen terakhir, membawa kepada gelung rekursif.

Atas ialah kandungan terperinci Mengapakah pengendali ` =` Python dan kaedah `append()` menghasilkan hasil yang berbeza apabila bekerja dengan senarai?. 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