Bagaimana saya menambahkan satu string yang lain di Python?
Saya ingin cara yang efisien untuk menambahkan satu string yang lain di Python, selain sebagai berikut.
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
Apa ada metode built-in untuk digunakan?
570
10
Jika anda hanya memiliki satu referensi untuk sebuah string dan anda menggabungkan string lain sampai akhir, CPython sekarang kasus-kasus khusus ini dan mencoba untuk memperpanjang string di tempat.
Hasil akhirnya adalah bahwa operasi diamortisasi O(n).
misalnya
digunakan untuk menjadi O(n^2), tapi sekarang itu adalah O(n).
Dari sumber (bytesobject.c):
It's cukup mudah untuk verifikasi secara empiris.
It's penting namun untuk dicatat bahwa ini optimasi isn't bagian dari Python spec. It's hanya di cPython implementasi sejauh yang saya tahu. Sama empiris pengujian di mount atau kelompok dari setiap dua elemen misalnya mungkin menunjukkan lebih tua O(n**2) kinerja .
So far So good, tapi kemudian,
aduh bahkan lebih buruk dari kuadrat. Jadi mount adalah melakukan sesuatu yang bekerja dengan baik dengan string pendek, tapi melakukan buruk untuk string yang lebih besar.
Don't prematur mengoptimalkan. Jika anda tidak memiliki alasan untuk percaya ada's kecepatan angin dan hambatan yang disebabkan oleh penggabungan string maka hanya dengan tongkat
+
dan+=
:Yang mengatakan, jika anda're bertujuan untuk sesuatu seperti Java's StringBuilder, kanonik Python idiom adalah untuk menambahkan item ke daftar, dan kemudian menggunakan
str.bergabung dengan
menyatukan mereka semua di akhir:Don't.
Itu adalah, untuk sebagian besar kasus, anda akan lebih baik menghasilkan seluruh string dalam satu pergi agak kemudian menambahkan ke yang sudah ada string.
Misalnya, don't melakukan:
obj1.nama + ":" + str(obj1.count)
Bukan: gunakan
"%s:%d" % (obj1.nama, obj1.count)
Sehingga akan lebih mudah untuk membaca dan lebih efisien.
Yang bergabung str1 dan str2 dengan spasi sebagai pemisah. Anda juga dapat melakukan
"".bergabung(str1, str2, ...)
.str.join()
mengambil iterable, sehingga anda'd harus menempatkan string di dalam suatu daftar atau tupel.Yang's tentang seefisien mendapat builtin metode.
Jika anda perlu untuk melakukan banyak menambahkan operasi besar untuk membangun sebuah string, anda dapat menggunakan StringIO atau cStringIO. Antarmuka seperti file. yaitu: anda
menulis
untuk menambahkan teks ke dalamnya.Jika anda're hanya menambahkan dua string kemudian hanya menggunakan
+
.itu benar-benar tergantung pada aplikasi anda. Jika anda're perulangan melalui ratusan kata-kata dan ingin menambahkan mereka semua ke dalam sebuah daftar,
.join()
adalah baik. Tapi jika anda're menyusun kalimat panjang, anda're lebih baik menggunakan+=
.Python 3.6 memberi kita f-string, yang menyenangkan:
Anda dapat melakukan apa yang paling di dalam kurung kurawal
Pada dasarnya, tidak ada perbedaan. Satu-satunya yang konsisten tren adalah bahwa Python tampaknya akan semakin lambat dengan setiap versi... :(
Daftar
Python 2.7
Python 3.4
Python 3.5
Python 3.6
String
Python 2.7:
Python 3.4
Python 3.5
Python 3.6
append string dengan add fungsi
Output