2011-03-08 11 views

Respuesta

7

cadena STRING3 == 'AB' en Python es sencillo

a = "A" 
b = "B" 
c = a + b 
print c 

> AB 

que la referencia de los tres operaciones , realizando 1m de cada uno:

c = a + b 
c = '%s%s' % (a,b) 
c = "{0}{1}".format(a, b) 

Y el resultado s son:

+: 0.232225275772 
%s: 0.42436670365 
{}: 0.683854960343 

Incluso con cadenas de 500 caracteres, + sigue siendo el más rápido con diferencia. Mis script is on ideone y los resultados (por 500 cadenas de carbón de leña) son:

+: 0.82 
%s: 1.54 
{}: 2.03 
+0

Y siempre pensé que la concatenación de cadenas con el signo + era lenta. Tal vez porque las cuerdas son demasiado cortas? –

+0

Tal vez, he subido mi script a Ideone, donde los resultados son aún más pronunciados: http://ideone.com/a6JMi – fredley

+0

No sabía que el método .format era más lento que el método% de formateo. Pensé que .format era el método preferido. ¿Siempre es más lento? – Curious2learn

2

usted podría utilizar la versión más simple: String3 = String1 + String2 o el operador de formato (en desuso en python3): String3 = '%s%s' % (String1, String2)

+0

Dado que está etiquetado explícitamente como python-3.x, eliminaría esa segunda opción. – fredley

+2

@fredley, leí% no se eliminará pronto. En el nuevo Python 3.2 se queda. – joaquin

+2

Para Python 3, puede usar 'String3 =" {0} {1} ". Format (String1, String2)'. –

2

En Python, los + concatena operador cadenas:

>>> String3 = String1 + String2 
>>> String3 
    'AB' 

Esta es la forma más sencilla y, por lo general, es la elección correcta. Sin embargo, a veces puede necesitar un más efficient string concatenation.

0

También puede probar str.join():

>>>s1='a' 
>>>s2='b' 
>>>s3=''.join((s1,s2)) 
>>>s3 
'ab' 

también si escribe:

>>>s3='WhatEver'.join((s1,s2)) 
>>>s3 
'aWhatEverb' 
0

Por simplicidad cuando la velocidad no importa, no se puede mejorar la facilidad de c=a+b. Si la velocidad sí importa (porque está realizando una gran cantidad de concatenaciones sucesivas, por ejemplo), str.join()can be a little more efficient (code at ideone).

+: 2.51 

''.join([a,...z]): 0.2 

append(): 2.05 

De lo que puedo decir, si va a realizar concatenaciones sucesivas sin tocar el producto intermedio, estoy mejor añadiendo cada adición a una lista, a continuación, unirse a todo a la vez. Para el caso de concatenación única, a+b es aún más rápido que a.join(b)

Cuestiones relacionadas