Python-Zeichenkettenobjekt ist unveränderlich. Daher wird jedes Mal, wenn wir den + Operator verwenden, um zwei Zeichenketten zu verknüpfen, eine neue Zeichenkette erstellt. Wenn wir viele Zeichenketten anhängen müssen, wird durch die Verwendung des + Operators unnötigerweise viele temporäre Zeichenketten erstellt, bevor wir das endgültige Ergebnis erhalten.
Python String anhängen
Lassen Sie uns eine Funktion betrachten, um eine Zeichenkette ’n‘ Mal zu verketten.
def str_append(s, n):
output = ''
i = 0
while i < n:
output += s
i = i + 1
return output
Beachten Sie, dass ich diese Funktion definiere, um die Verwendung des + Operators zu zeigen. Ich werde später das timeit-Modul verwenden, um die Leistung zu testen. Wenn Sie einfach eine Zeichenkette ’n‘ Mal verketten möchten, können Sie dies einfach mit s = 'Hallo' * 10
tun.
Eine andere Möglichkeit, die Zeichenkettenanhangoperation durchzuführen, besteht darin, eine Liste zu erstellen und Zeichenketten an die Liste anzuhängen. Verwenden Sie dann die string join() Funktion, um sie zusammenzuführen und die Ergebniszeichenkette zu erhalten.
def str_append_list_join(s, n):
l1 = []
i = 0
while i < n:
l1.append(s)
i += 1
return ''.join(l1)
Lassen Sie uns diese Methoden testen, um sicherzustellen, dass sie wie erwartet funktionieren.
if __name__ == "__main__":
print('Append using + operator:', str_append('Hi', 10))
print('Append using list and join():', str_append_list_join('Hi', 10))
# Verwenden Sie das unten stehende für diesen Fall, die obigen Methoden werden erstellt, damit wir
# die Leistung mit dem timeit-Modul überprüfen können
print('Append using * operator:', 'Hi' * 10)
Ergebnis:
Append using + operator: HiHiHiHiHiHiHiHiHiHi
Append using list and join(): HiHiHiHiHiHiHiHiHiHi
Append using * operator: HiHiHiHiHiHiHiHiHiHi
Beste Möglichkeit, Zeichenfolgen in Python anzuhängen
I have both the methods defined in string_append.py
file. Let’s use timeit module to check their performance.
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hello", 1000)'
1000 loops, best of 5: 174 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hello", 1000)'
1000 loops, best of 5: 140 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hi", 1000)'
1000 loops, best of 5: 165 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hi", 1000)'
1000 loops, best of 5: 139 usec per loop
Zusammenfassung
Wenn es nur wenige Zeichenfolgen gibt, können Sie jede Methode verwenden, um sie anzuhängen. Aus Lesbarkeitsgründen scheint die Verwendung des + Operators für wenige Zeichenfolgen besser zu sein. Wenn Sie jedoch viele Zeichenfolgen anhängen müssen, sollten Sie die Liste und die join() Funktion verwenden.
Sie können das komplette Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository überprüfen.
Source:
https://www.digitalocean.com/community/tutorials/python-string-append