752 Stimmen

Wie kann ich in Python eine Zeichenkette an eine andere anhängen?

Wie kann ich eine Zeichenkette effizient an eine andere anhängen? Gibt es schnellere Alternativen zu:

var1 = "foo"
var2 = "bar"
var3 = var1 + var2

17 Stimmen

TL;DR: Wenn Sie nur nach einer einfachen Möglichkeit suchen, Zeichenketten anzuhängen, und Ihnen die Effizienz egal ist: "foo" + "bar" + str(3)

16voto

Laurence Gonsalves Punkte 131009

Wenn Sie viele Anhängeoperationen durchführen müssen, um eine große Zeichenkette zu erstellen, können Sie StringIO oder cStringIO. Die Schnittstelle ist wie eine Datei, d.h.: Sie write um Text an den Text anzuhängen.

Wenn Sie nur zwei Strings aneinanderhängen, verwenden Sie einfach + .

10voto

Ramy Punkte 19351

Es hängt wirklich von Ihrer Anwendung ab. Wenn Sie Hunderte von Wörtern in einer Schleife durchgehen und sie alle an eine Liste anhängen wollen, .join() ist besser. Aber wenn Sie einen langen Satz zusammensetzen, ist es besser, wenn Sie += .

7voto

ostrokach Punkte 14576

Im Grunde gibt es keinen Unterschied. Der einzige konstante Trend ist, dass Python mit jeder Version langsamer zu werden scheint... :(


Liste

%%timeit
x = []
for i in range(100000000):  # xrange on Python 2.7
    x.append('a')
x = ''.join(x)

Python 2.7

1 Runde, beste von 3: 7.34 s pro Schleife

Python 3.4

1 Runde, beste von 3: 7.99 s pro Schleife

Python 3.5

1 Runde, beste von 3: 8.48 s pro Schleife

Python 3.6

1 Runde, beste von 3: 9.93 s pro Schleife


Zeichenfolge

%%timeit
x = ''
for i in range(100000000):  # xrange on Python 2.7
    x += 'a'

Python 2.7 :

1 Runde, beste von 3: 7.41 s pro Schleife

Python 3.4

1 Runde, beste von 3: 9.08 s pro Schleife

Python 3.5

1 Runde, beste von 3: 8.82 s pro Schleife

Python 3.6

1 Runde, beste von 3: 9.24 s pro Schleife

3 Stimmen

Ich denke, das kommt darauf an. Ich bekomme 1.19 s y 992 ms jeweils auf Python2.7

6voto

saigopi.me Punkte 11504

Anhängen von Zeichenketten mit dem hinzufügen. Funktion:

str1 = "Hello"
str2 = " World"
str3 = str1.__add__(str2)
print(str3)

Ausgabe:

Hello World

10 Stimmen

str + str2 ist noch kürzer.

3voto

Rahul Shrivastava Punkte 1341
a='foo'
b='baaz'

a.__add__(b)

out: 'foobaaz'

2 Stimmen

Code ist schön, aber eine begleitende Erklärung wäre hilfreich. Warum sollte man diese Methode verwenden und nicht die anderen Antworten auf dieser Seite?

17 Stimmen

Verwendung von a.__add__(b) ist identisch mit dem Schreiben a+b . Bei der Verkettung von Zeichenketten mit der + Operator, ruft Python den __add__ Methode auf die Zeichenfolge auf der linken Seite und übergibt die Zeichenfolge auf der rechten Seite als Parameter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X