Im Allgemeinen gibt es drei Möglichkeiten, Python-Strings zu verbinden:
Methode 1: Direkt über den Pluszeichen-Operator ( ) verbinden
website = 'python' + 'tab' + '.com'
Methode 2: Join-Methode
listStr = ['python', 'tab', '.com'] website = ''.join(listStr)
Methode 3: Ersetzen
website = '%s%s%s' % ('python', 'tab', '.com')
Lassen Sie uns über die Unterschiede zwischen den drei Methoden sprechen
Methode 1 ist einfach und direkt anzuwenden, aber viele Leute im Internet sagen, dass diese Methode ineffizient ist
Der Grund, warum die Zeichenfolgenverkettung in Python ineffizient ist, liegt darin, dass Zeichenfolgen in Python unveränderliche Typen sind. Wenn zwei Zeichenfolgen verkettet werden, müssen neue Zeichenfolgen generiert werden Da es viele Zeichenfolgen gibt, die kontinuierlich hinzugefügt werden (a b c d e f ...), ist eine geringe Effizienz unvermeidlich
Methode 2, etwas kompliziert in der Anwendung, aber effizient beim Verbinden mehrerer Zeichen , und es wird nur eine Speicheranwendung geben. Und wenn Sie Zeichen in der Liste verketten, muss diese Methode die erste Wahl sein
Methode 3: String-Formatierung, diese Methode wird sehr häufig verwendet und ich empfehle sie auch Verwenden Sie diese Methode
Die folgenden Experimente werden verwendet, um die Effizienz der String-Verkettung zu veranschaulichen.
比较对象:加号连接 VS join连接 python版本: python2.7 系统环境:CentOS
Experiment 1:
# -*- coding: utf-8 -*- from time import time def method1(): t = time() for i in xrange(100000): s = 'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab' print time() - t def method2(): t = time() for i in xrange(100000): s = ''.join(['pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab']) print time() -t method1() method2()
Ergebnis:
0.641695976257 0.341440916061
Experiment 2:
# -*- coding: utf-8 -*- from time import time def method1(): t = time() for i in xrange(100000): s = 'pythontab'+'pythontab'+'pythontab'+'pythontab' print time() - t def method2(): t = time() for i in xrange(100000): s = ''.join(['pythontab','pythontab','pythontab','pythontab']) print time() -t method1() method2()
Ergebnis:
0.0265691280365 0.0522091388702
Die beiden oben genannten Experimente haben völlig unterschiedliche Ergebnisse. Der einzige Unterschied zwischen den beiden Experimenten ist die Anzahl der String-Verbindungen.
Schlussfolgerung: Die geringe Effizienz der Pluszeichen-Verbindung tritt auf, wenn mehrere Strings kontinuierlich verbunden sind. Wenn die Anzahl der Verbindungen gering ist, ist die Effizienz der Pluszeichen-Verbindung höher als die der Join-Verbindung