Python Append() vs. = pada Senarai: Mengapa Mereka Memberikan Hasil Berbeza?

DDD
Lepaskan: 2024-10-27 20:55:30
asal
930 orang telah melayarinya

 Python Append() vs.  = on Lists: Why Do They Give Different Results?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan