¿Equivalente de Python para la implosión de PHP?

103

¿Existe un equivalente para la implosión de PHP en Python? He leído y dividido un conjunto de palabras delimitadas, y ahora quiero ordenarlas en orden aleatorio e imprimir las palabras con espacios en medio.

implosión: une elementos de matriz con una cadena

http://php.net/manual/en/function.implode.php

pythonian29033
fuente

Respuestas:

185

Utilice el método de unión de cadenas .

print ' '.join(['word1', 'word2', 'word3'])

Puede unir cualquier iterable (no solo el listusado aquí) y, por supuesto, puede usar cualquier cadena (no solo ' ') como delimitador.

Si quieres un orden aleatorio como dijiste en tu pregunta, usa Shuffle .

Matías
fuente
join () funciona muy bien si tiene una matriz de cadenas, pero si algún miembro de la matriz es int en lugar de una cadena, obtendrá un TypeError, la implosión de php no hace eso, incluso en modo estricto = / <?php declare(strict_types=1);var_dump(implode("glue",["startString",(int)123,"endString"]));le da string(31) "startStringglue123glueendString"pero en Python hacer "glue".join(["startString",123,"endString"]);te daTypeError: sequence item 1: expected str instance, int found
Hanshenrik
14

Bien, acabo de encontrar una función que hace lo que quería hacer;

Leí en un archivo con palabras en un formato como: Jack/Jill/my/kill/name/bucket

Luego lo dividí usando el split()método y una vez que tuve la palabra en una lista, concatené las palabras con este método:

concatenatedString = ' - '.join(myWordList)
# ie: delimeter.join(list)
pythonian29033
fuente
3
No entiendo por qué quieres unirte. Primero tienes una línea, la divides en caracteres y luego la vuelves a unir. ¿Por qué no reemplaza a los personajes en primer lugar? (Se pierde la parte 'aleatoria' en su propia respuesta, ¿ya no es relevante?)
RvdK