Chcę wydajny sposób dołączania jednego ciągu do drugiego w Pythonie, inny niż następujący.
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
Czy istnieje jakaś dobra wbudowana metoda, której można użyć?
Nie optymalizuj przedwcześnie. Jeśli nie masz powodu by sądzić, że istnieje wąskie gardło prędkości spowodowane przez konkatenacje łańcuchów, to po prostu trzymaj się +
i +=
:
s = 'foo'
s += 'bar'
s += 'baz'
To powiedziawszy, jeśli'dążysz do czegoś takiego jak Java's StringBuilder, kanonicznym idiomem Pythona jest dodawanie elementów do listy, a następnie użycie str.join
do konkatenacji ich wszystkich na końcu:
l = []
l.append('foo')
l.append('bar')
l.append('baz')
s = ''.join(l)
str1 = "Hello"
str2 = "World"
newstr = " ".join((str1, str2))
To łączy str1 i str2 ze spacją jako separatorami. Możesz też zrobić "".join(str1, str2, ...)
. str.join()` pobiera iterowalną, więc musiałbyś umieścić ciągi w liście lub tuple.
To jest mniej więcej tak wydajne, jak to się robi dla wbudowanej metody.
Jeśli potrzebujesz wykonać wiele operacji dołączania, aby zbudować duży łańcuch, możesz użyć StringIO lub cStringIO. Interfejs jest jak plik, tzn: zapisujesz
aby dodać do niego tekst.
Jeśli'aplikujesz tylko dwa łańcuchy, to po prostu użyj +
.