Website-Suche

Python-String-Anhängen


Python-String-Objekte sind unveränderlich. Jedes Mal, wenn wir den + Operator verwenden, um zwei Strings zu verketten, wird ein neuer String erstellt. Wenn wir viele Strings anhängen müssen, wird die Verwendung des + Operators unnötig viele temporäre Strings erstellen, bevor wir das endgültige Ergebnis haben.

Python-String-Anhängen

Lass uns eine Funktion betrachten, um einen String '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 demonstrieren. Später werde ich das timeit-Modul verwenden, um die Leistung zu testen. Wenn Sie einfach einen String 'n' Mal verketten möchten, können Sie dies einfach tun, indem Sie s='Hi' * 10 verwenden.

Eine andere Möglichkeit, eine String-Anfügeoperation durchzuführen, besteht darin, eine Liste zu erstellen und Strings zur Liste hinzuzufügen. Dann verwenden Sie die String join()-Funktion, um sie zusammenzuführen und den Ergebnisstring zu erhalten.

def str_append_list_join(s, n):
    l1 = []
    i = 0
    while i < n:
        l1.append(s)
        i += 1
    return ''.join(l1)

Lass 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))
    # use below for this case, above methods are created so that we can
    # check performance using timeit module
    print('Append using * operator:', 'Hi' * 10)

Ausgabe :

Append using + operator: HiHiHiHiHiHiHiHiHiHi
Append using list and join(): HiHiHiHiHiHiHiHiHiHi
Append using * operator: HiHiHiHiHiHiHiHiHiHi

Die beste Methode zum Verketten von Zeichenfolgen in Python

Ich habe beide Methoden in der Datei string_append.py definiert. Lassen Sie uns das Modul timeit verwenden, um ihre Leistung zu überprüfen.

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 Strings gibt, können Sie jede Methode verwenden, um sie anzuhängen. Aus Sicht der Lesbarkeit scheint die Verwendung des + Operators bei wenigen Strings besser zu sein. Wenn Sie jedoch viele Strings anhängen müssen, sollten Sie die Liste und die join()-Funktion verwenden.

Sie können das vollständige Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository abrufen.