Jak przekonwertować listę na ciąg znaków ze spacjami w Pythonie?

93

Jak przekonwertować listę na ciąg znaków oddzielonych spacjami w Pythonie?

Na przykład chcę przekonwertować tę listę:

my_list = [how,are,you]

W strunę "how are you"

Przestrzenie są ważne. Nie chcę uzyskać tego, howareyouco mam z dotychczasową próbą używania

"".join(my_list)
user1653402
źródło
18
Protip: Nie używaj listjako nazwy zmiennej.
Tim Pietzcker,

Odpowiedzi:

196
" ".join(my_list)

musisz połączyć spacją, a nie pustym ciągiem ...

Joran Beasley
źródło
7
Taki kod jest powodem, dla którego lubię Pythona. Tak prosty.
Josh
co, jeśli mamy ciąg w tym formacie, list = ['how ', 'are ', 'you '] to jak przekonwertować to na listę.
Muhammad Taqi
1
@MuhammadTaqi, a następnie po prostu zdejmij element łączący be4 ..." ".join([i.strip() for i in my_list)
JACK ZHANG
17

Dorzucę to jako alternatywę dla samego cholerstwa, mimo że jest to prawie bezużyteczne w porównaniu do " ".join(my_list)strun. W przypadku znaków niebędących łańcuchami (takich jak tablica liczb int) może to być lepsze:

" ".join(str(item) for item in my_list)
Polaris
źródło
7

W przypadku Non String listmożemy to również zrobić

" ".join(map(str, my_list))
Athar
źródło
2

Aby więc uzyskać pożądany wynik, powinniśmy najpierw wiedzieć, jak działa ta funkcja.

Składnia join()metody opisana w dokumentacji języka Python jest następująca:

string_name.join(iterable)

Kwestie, na które należy zwrócić uwagę:

  • Zwraca stringpołączone z elementami iterable. Separator między elementami będący string_name.
  • Każda wartość niebędąca ciągiem w iterableelemencie spowoduje podniesienieTypeError

Teraz, aby dodać spacje , wystarczy zamienić string_nameznak na jeden " "lub ' 'oba będą działać i umieścić to iterable, co chcemy połączyć.

Tak więc nasza funkcja będzie wyglądać mniej więcej tak:

' '.join(my_list)

Ale co, jeśli chcemy dodać określoną liczbę white spacesmiędzy naszymi elementami w iterable?

Musimy to dodać:

str(number*" ").join(iterable)

tutaj numberbędzie dane wejściowe użytkownika.

Na przykład jeśli number=4.

Następnie wynik str(4*" ").join(my_list)will będzie how are you, więc między każdym słowem są 4 białe spacje.

Abhay Tiwari
źródło
1

"".join([i for i in my_list])

To powinno działać tak, jak prosiłeś!

Abhishek Thulasi
źródło
-9

Dlaczego nie dodasz spacji w pozycjach samej listy, na przykład:
list = ["how ", "are ", "you "]

Anonimowy
źródło
Napisałeś tę odpowiedź w sposób, który sprawia, że ​​wydaje się ona bardziej odpowiednia w formie komentarza. Byłoby bardziej korzystne, gdybyś rozszerzył tę odpowiedź, aby wyjaśnić, dlaczego to, co sugerujesz, działa.
Andon M. Coleman
1
To nie działa w przypadku, gdy nie masz dostępu do listy (np. Podczas generowania za pomocą input(a).split(b))
TheSola10
nie powinniśmy zmieniać wewnętrznych ciągów, ponieważ powoduje to utratę miejsca
Deepak Yadav