Penggabungan Rentetan dalam Python: Adakah Terdapat Cara Lebih Cepat untuk Menambah Rentetan?

Mary-Kate Olsen
Lepaskan: 2024-11-01 04:08:28
asal
983 orang telah melayarinya

String Concatenation in Python: Is There a Faster Way to Append Strings?

Menggabungkan Rentetan dalam Python: Pendekatan Cekap

Soalan: Bagaimanakah saya boleh menambahkan satu rentetan ke rentetan yang lain dengan cekap dalam Python? Adakah terdapat alternatif yang lebih pantas untuk kod berikut?

<code class="python">var1 = "foo"
var2 = "bar"
var3 = var1 + var2</code>
Salin selepas log masuk

Jawapan:

CPython, pelaksanaan Python utama, kini mengoptimumkan gabungan rentetan dengan cuba memanjangkan rentetan di tempat apabila hanya satu rujukan kepada rentetan hadir. Pengoptimuman ini menghasilkan kerumitan masa O(n) terlunas.

Sebagai contoh, kod berikut:

<code class="python">s = ""
for i in range(n):
    s += str(i)</code>
Salin selepas log masuk

yang dahulunya mempunyai kerumitan masa O(n^2), ialah sekarang O(n).

Butiran Teknikal:

Dalam pelaksanaan CPython, fungsi _PyBytes_Resize bertanggungjawab untuk pengoptimuman ini. Ia membenarkan saiz semula rentetan tanpa mencipta objek baharu, dengan syarat hanya satu modul merujuk rentetan asal.

Analisis Prestasi:

Ujian empirikal menunjukkan peningkatan prestasi yang ketara untuk operasi penggabungan rentetan:

String Size Concatenation Time (CPython)
10 1.85 usec
100 16.8 usec
1,000 158 usec
10,000 1.71 msec
100,000 14.6 msec
1,000,000 173 msec

Nota Penting:

Pengoptimuman ini khusus untuk CPython dan mungkin tidak terdapat dalam pelaksanaan Python lain, seperti PyPy atau Jython . Dalam kes ini, prestasi penggabungan rentetan mungkin berbeza daripada pelaksanaan CPython.

Atas ialah kandungan terperinci Penggabungan Rentetan dalam Python: Adakah Terdapat Cara Lebih Cepat untuk Menambah Rentetan?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!