Python: как преобразовать список в строку (join)
Чтобы превратить список в строку в Python, используйте метод join: ", ".join(items). Разделитель пишется перед .join, а список подаётся в скобках. Элементы должны быть строками, числа сначала приводят к строке через map(str, ...).
Список строк в строку
words = ["яблоко", "груша", "слива"]
print(", ".join(words)) # яблоко, груша, слива
print("".join(words)) # яблокогрушаслива
print("\n".join(words))Последний вызов выводит слова в столбик, по одному на строку.
Список чисел в строку
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 список чисел напрямую, будет ошибка:
try:
", ".join(numbers)
except TypeError as error:
print(error) # sequence item 0: expected str instance, int foundЭлементы разных типов и None
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Список в строку со скобками и кавычками
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.
Строка обратно в список
text = "яблоко, груша, слива"
print(text.split(", ")) # ['яблоко', 'груша', 'слива']
print("1 2 3".split()) # ['1', '2', '3']
print(list(map(int, "1 2 3".split()))) # [1, 2, 3]Вложенные списки
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] для списка из двух и более элементов.