¿Qué hace exactamente el.join () método do?
Soy bastante nuevo en Python y estoy completamente confundido por .join()
que he leído que es el método preferido para concatenar cadenas.
Lo intenté:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
Y tengo algo como:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
¿Por qué funciona así? ¿No debería añadirse automáticamente el 595
?
7 answers
Mire cuidadosamente su salida:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^ ^ ^
He resaltado la "5", "9", "5" de tu cuerda original. La Pitón join()
method es un método de cadena, y toma una lista de cosas para unir con la cadena. Un ejemplo más simple podría ayudar a explicar:
>>> ",".join(["a", "b", "c"])
'a,b,c'
El "," se inserta entre cada elemento de la lista dada. En su caso, su "lista" es la representación de cadena "595", que se trata como la lista ["5", "9", "5"].
Parece que estás buscando +
en su lugar:
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-19 02:32:40
join
toma una cosa iterable como argumento. Normalmente es una lista. El problema en su caso es que una cadena es iterable, dando cada carácter a su vez. Su código se descompone en esto:
"wlfgALGbXOahekxSs".join("595")
Que actúa de la misma manera:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
Y así produce tu cadena:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
Cadenas como iterables es uno de los problemas iniciales más confusos con Python.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-09 19:24:45
Para añadir una cadena, sólo concatenar con el +
signo.
Por ejemplo
>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world
join
conecta cadenas con un separador. El separador es lo que
colocar justo antes del join
. Por ejemplo,
>>> "-".join([a,b])
'Hello, -world'
Join toma una lista de cadenas como parámetro.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-09 19:26:13
Join() es para concatenar todos los elementos de la lista. Para concatenar solo dos cadenas " + "tendría más sentido:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-09 19:24:09
Para expandir un poco más sobre lo que otros están diciendo, si desea usar join para simplemente concatenar sus dos cadenas, haría esto:
strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring(), strid])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-09 21:26:13
Al proporcionar esto como entrada ,
li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)
Python devuelve esto como salida :
'server=mpilgrim;uid=sa;database=master;pwd=secret'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-21 05:08:46
Hay una buena explicación de por qué es costoso usar +
para concatenar un gran número de cadenas aquí
El operador Plus es una solución perfecta para concatenar dos Python cadena. Pero si sigues añadiendo más de dos cadenas (n > 25), quizá quiera pensar en otra cosa.
''.join([a, b, c])
el truco es una optimización del rendimiento.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-26 09:53:01