Как преобразовать список в строку с пробелами в Python?


93

Как я могу преобразовать список в строку, разделенную пробелами в Python?

Например, я хочу преобразовать этот список:

my_list = [how,are,you]

В строку "how are you"

Пространства важны. Я не хочу добиться того howareyouже с моей попыткой использовать

"".join(my_list)

18
Совет: не используйте listв качестве имени переменной.
Тим Пицкер,

Ответы:


196
" ".join(my_list)

вам нужно присоединиться к пробелу, а не к пустой строке ...


7
Вот почему мне нравится Python. Так просто.
Джош

что, если у нас есть строка в этом формате, list = ['how ', 'are ', 'you '] как преобразовать ее в список.
Мухаммад Таки,

1
@MuhammadTaqi, тогда просто удалите элемент be4, присоединяющийся ..." ".join([i.strip() for i in my_list)
ДЖЕК ЧЖАНГ,

17

Я добавлю это как альтернативу, черт возьми, хотя это почти бесполезно по сравнению со " ".join(my_list)строками. Для нестроковых (например, массива целых чисел) это может быть лучше:

" ".join(str(item) for item in my_list)

7

Для Non String listмы можем сделать то же самое

" ".join(map(str, my_list))

2

Итак, чтобы достичь желаемого результата, мы должны сначала узнать, как работает функция.

Синтаксис join()метода, описанный в документации Python, выглядит следующим образом:

string_name.join(iterable)

На заметку:

  • Он возвращает stringобъединенный с элементами iterable. Разделитель между элементами - это string_name.
  • Любое нестроковое значение в iterableвызоветTypeError

Теперь, чтобы добавить пробелы , нам просто нужно заменить их на string_namea, " "или они ' 'оба будут работать и поместить то, iterableчто мы хотим объединить.

Итак, наша функция будет выглядеть примерно так:

' '.join(my_list)

Но что, если мы хотим добавить определенное количество white spacesпромежуточных элементов между нашими элементами в iterable?

Нам нужно добавить это:

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

здесь numberбудет пользовательский ввод.

Так, например, если number=4.

Тогда вывод str(4*" ").join(my_list)будет таким how are you, чтобы между каждым словом было 4 пробела.



-9

Почему бы вам не добавить пробел в элементы самого списка, например:
list = ["how ", "are ", "you "]


Вы написали этот ответ таким образом, чтобы он выглядел более подходящим в форме комментария. Было бы более полезно, если бы вы расширили этот ответ, чтобы объяснить, почему то, что вы предлагаете, работает.
Andon M. Coleman

1
Это не работает в том случае, если у вас нет доступа к списку (например, при создании с помощью input(a).split(b))
TheSola10,

мы не должны менять внутренние струны, потому что это приводит к потере места,
Дипак Ядав
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.