Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erläuterung der drei Methoden der Python-String-Verkettung sowie ihrer Effizienz und anwendbaren Szenarien

Ausführliche Erläuterung der drei Methoden der Python-String-Verkettung sowie ihrer Effizienz und anwendbaren Szenarien

高洛峰
高洛峰Original
2016-10-17 16:53:241633Durchsuche

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn