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

93

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

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

my_list = [how,are,you]

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

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

"".join(my_list)
user1653402
источник
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 пробела.

Абхай Тивари
источник
1

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

Это должно работать так, как вы просили!

Абхишек Туласи
источник
-9

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

Анонимный
источник
Вы написали этот ответ таким образом, чтобы он выглядел более подходящим в форме комментария. Было бы более полезно, если бы вы расширили этот ответ, чтобы объяснить, почему то, что вы предлагаете, работает.
Andon M. Coleman
1
Это не работает в том случае, если у вас нет доступа к списку (например, при создании с помощью input(a).split(b))
TheSola10,
мы не должны менять внутренние струны, потому что это приводит к потере места,
Дипак Ядав