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>
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>
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!