Python: как преобразовать список в строку (join)

Категория: Python · Язык: Python · Обновлено:

Чтобы превратить список в строку в Python, используйте метод join: ", ".join(items). Разделитель пишется перед .join, а список подаётся в скобках. Элементы должны быть строками, числа сначала приводят к строке через map(str, ...).

Список строк в строку

Python
words = ["яблоко", "груша", "слива"]

print(", ".join(words))   # яблоко, груша, слива
print("".join(words))     # яблокогрушаслива
print("\n".join(words))

Последний вызов выводит слова в столбик, по одному на строку.

Список чисел в строку

Python
numbers = [3, 14, 15, 92]

print(", ".join(map(str, numbers)))             # 3, 14, 15, 92
print(", ".join(str(n) for n in numbers))       # 3, 14, 15, 92
print(" + ".join(map(str, numbers)))            # 3 + 14 + 15 + 92

Если передать в join список чисел напрямую, будет ошибка:

Python
try:
    ", ".join(numbers)
except TypeError as error:
    print(error)  # sequence item 0: expected str instance, int found

Элементы разных типов и None

Python
mixed = ["id", 7, None, 2.5, True]

print(", ".join(map(str, mixed)))                          # id, 7, None, 2.5, True
print(", ".join(str(x) for x in mixed if x is not None))   # id, 7, 2.5, True

Список в строку со скобками и кавычками

Python
items = ["a", "b", "c"]

print(str(items))                                  # ['a', 'b', 'c']
print("[" + ", ".join(items) + "]")                # [a, b, c]
print(", ".join(f'"{item}"' for item in items))    # "a", "b", "c"

str(список) выводит список в виде, пригодном для отладки, с кавычками и квадратными скобками. Для готового текста используйте join.

Строка обратно в список

Python
text = "яблоко, груша, слива"
print(text.split(", "))                  # ['яблоко', 'груша', 'слива']
print("1 2 3".split())                   # ['1', '2', '3']
print(list(map(int, "1 2 3".split())))   # [1, 2, 3]

Вложенные списки

Python
rows = [["Аня", 30], ["Борис", 25]]

print("; ".join(f"{name}={age}" for name, age in rows))  # Аня=30; Борис=25

Частые вопросы

Почему join вызывается у строки, а не у списка?

Разделитель задаёт строка, поэтому метод принадлежит ей: ", ".join(список). Так join работает не только со списками, но и с кортежами, множествами и генераторами.

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

Используйте пустую строку в качестве разделителя: "".join(items).

Как добавить «и» перед последним элементом?

", ".join(items[:-1]) + " и " + items[-1] для списка из двух и более элементов.