Odpowiednik Pythona dla implode PHP?

103

Czy istnieje odpowiednik implodu PHP w Pythonie? Przeczytałem i rozdzieliłem zestaw rozdzielonych słów, a teraz chcę uporządkować je w przypadkowej kolejności i wydrukować słowa ze spacjami między nimi.

implode - Połącz elementy tablicy za pomocą ciągu

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

pythonian29033
źródło

Odpowiedzi:

185

Użyj metody łączenia ciągów .

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

Możesz dołączyć do dowolnej iterowalnej (nie tylko listużytej tutaj) i oczywiście możesz użyć dowolnego ciągu (nie tylko ' ') jako separatora.

Jeśli chcesz uzyskać losową kolejność, jak powiedziałeś w swoim pytaniu, użyj odtwarzania losowego .

Matthias
źródło
join () działa świetnie, jeśli masz tablicę ciągów, ale jeśli którykolwiek element tablicy jest int zamiast ciągiem, otrzymasz TypeError, implode php tego nie robi, nawet w trybie ścisłym = / <?php declare(strict_types=1);var_dump(implode("glue",["startString",(int)123,"endString"]));daje ci string(31) "startStringglue123glueendString"ale w Pythonie "glue".join(["startString",123,"endString"]);daje ci toTypeError: sequence item 1: expected str instance, int found
hanshenrik
14

OK, właśnie znalazłem funkcję, która robi to, co chciałem;

Przeczytałem w pliku ze słowami w formacie: Jack/Jill/my/kill/name/bucket

Następnie podzieliłem to za pomocą split()metody i kiedy już miałem słowo na liście, połączyłem słowa z tą metodą:

concatenatedString = ' - '.join(myWordList)
# ie: delimeter.join(list)
pythonian29033
źródło
3
Nie rozumiem, dlaczego chcesz się przyłączyć. Najpierw masz linię, dzielisz ją na znaki, a następnie łączysz ponownie. Dlaczego nie zastąpisz znaków w pierwszej kolejności? (Brakuje Ci
``