Python: как преобразовать список в строку
Под списком в языке Python понимают набор объектов любого типа, которые синтаксически упорядочены (это реализуется при помощи квадратных скобок и запятых). Этот тип хранения данных весьма удобен, однако иногда бывает необходимо преобразовать элементы списка в строку Python. Это можно сделать несколькими способами, которые мы и рассмотрим в данной статье. Но сначала заметим, что некоторые из этих способов равны по возможностям, и выбор здесь определяется привычками или опытом программиста.
Способ №1. Преобразование с использованием функции join()
Это самый популярный метод трансформирования списка в строку, а выполняется он при помощи функции join() с разделителем. Чтобы было понятнее, приведем несколько примеров:
>>> words = ['каждый','охотник','желает','знать','где','сидит','фазан']
>>> print(" ".join(words))
каждый охотник желает знать где сидит фазан
>>> products = ['milk','cheese','bread','sausage','butter','cocoa','eggs']
>>> print(" ".join(products))
milk cheese bread sausage butter cocoa eggs
В качестве разделителя указан пробел, но можно поставить, например, запятую или любой другой символ. Однако если мы таким образом попытаемся преобразовать в строку список, в котором есть числовые значения, может возникнуть ошибка:
>>> champs = ['топ', 5, 'футбольных', 'чемпионатов', 'Европы', '-', 'Испания', 'Италия', 'Франция', 'Англия', 'Германия']
>>> print(" ".join(champs))
Traceback (most recent call last):
File "", line 1, in
print(" ".join(champs))
TypeError: sequence item 1: expected str instance, int found
Всё дело в том, что для корректного вывода здесь нужно выполнить преобразование отдельных элементов в строчные значения, а это реализуется при помощи специальной функции.
Способ №2. Конструкция join() + map()
Исключить ошибку выше поможет данный способ, в котором задействуется еще одна функция, map() , причем со встроенной функцией str , которая используется для преобразования любых аргументов в строковые значения. Вот как это выглядит в коде:
>>> champs = ['топ', 5, 'футбольных', 'чемпионатов', 'Европы', '-', 'Испания', 'Италия', 'Франция', 'Англия', 'Германия']
>>> print(" ".join(map(str,champs)))
топ 5 футбольных чемпионатов Европы - Испания Италия Франция Англия Германия
Итак, при помощи функции join() и разделителя мы вывели элементы списка в виде строки, а функция map() со встроенной функцией str помогла нам объединить элементы разных типов. Рассмотрим еще один пример:
>>> numbers = [3, 5, 7, 9, 11, 13, 15, 17]
>>> print(" ".join(map(str,numbers)))
3 5 7 9 11 13 15 17
Первый способ здесь бы тоже не сработал, поскольку в списке есть числовые значения, поэтому использовали вариант join() + map() .
Способ №3. Преобразование при помощи цикла
В данном случае циклическое программирование не самый удобный способ преобразования списка в строку, однако он подойдет для новичков, которые еще не знакомы с большинством функций. Вот как это реализуется при помощи цикла for :
>>> clubs = [7, 'ведущих', 'европейских', 'клубов', '-', 'Реал', 'Барселона', 'МЮ', 'Челси', 'Бавария', 'Милан', 'Ювентус']
>>> string = ' '
>>> for j in clubs:
string += str(j)+ ' '
>>> print(string)
7 ведущих европейских клубов - Реал Барселона МЮ Челси Бавария Милан Ювентус
Мы задали список и ввели дополнительную переменную, чтобы реализовать вывод строки (для наглядности переменная получила имя string ) после перебора значений с помощью типичной конструкции for .
Как преобразовать строку в список в Python 3
В этой главе рассмотрим обратный процесс преобразования. Операция эта тоже несложная и реализуется с помощью функции split() вот так:
>>> products = 'milk cheese bread sausage butter cocoa eggs'
>>> print(f'products list =')
products list =['milk', 'cheese', 'bread', 'sausage', 'butter', 'cocoa', 'eggs']
Заключение
Мы рассмотрели преобразование элементов списков в строчные значения и наоборот.
Обратите внимание, что в последнем примере мы использовали f-строки — весьма удобный метод форматирования, появившийся в версии 3.6.
Многомерные списки
Часто в задачах приходится хранить прямоугольные таблицы с данными. Такие таблицы называются матрицами или двумерными массивами. В языке программирования Питон таблицу можно представить в виде списка строк, каждый элемент которого является в свою очередь списком, например, чисел. Например, создать числовую таблицу из двух строк и трех столбцов можно так:
a = [[1, 2, 3], [4, 5, 6]]
Здесь первая строка списка a[0] является списком из чисел [1, 2, 3] . То есть a[0][0] == 1 , значение a[0][1] == 2 , a[0][2] == 3 , a[1][0] == 4 , a[1][1] == 5 , a[1][2] == 6 .
Для обработки и вывода списка как правило используется два вложенных цикла. Первый цикл по номеру строки, второй цикл по элементам внутри строки. Например, вывести двумерный числовой список на экран построчно, разделяя числа пробелами внутри одной строки, можно так:
for i in range(len(a)): for j in range(len(a[i])): print(a[i][j], end=' ') print()
То же самое, но циклы не по индексу, а по значениям списка:
for row in a: for elem in row: print(elem, end=' ') print()
Естественно для вывода одной строки можно воспользоваться методом join :
for row in a: print(' '.join(map(str, row)))
Используем два вложенных цикла для подсчета суммы всех чисел в списке:
s = 0 for i in range(len(a)): for j in range(len(a[i])): s += a[i][j]
Или то же самое с циклом не по индексу, а по значениям строк:
s = 0 for row in a: for elem in row: s += elem
Создание списка
Пусть даны два числа: количество строк n и количество столбцов m . Необходимо создать список размером n × m , заполненный нулями.
Очевидное решение оказывается неверным:
a = [[0] * m] * n
В этом легко убедиться, если присвоить элементу a[0][0] значение 1 , а потом вывести значение другого элемента a[1][0] — оно тоже будет равно 1! Дело в том, что [0] * m возвращает ccылку на список из m нулей. Но последующее повторение этого элемента создает список из n элементов, которые являются ссылкой на один и тот же список (точно так же, как выполнение операции b = a для списков не создает новый список), поэтому все строки результирующего списка на самом деле являются одной и той же строкой.
Таким образом, двумерный список нельзя создавать при помощи операции повторения одной строки. Что же делать?
Первый способ: сначала создадим список из n элементов (для начала просто из n нулей). Затем сделаем каждый элемент списка ссылкой на другой одномерный список из m элементов:
a = [0] * n for i in range(n): a[i] = [0] * m
Другой (но похожий) способ: создать пустой список, потом n раз добавить в него новый элемент, являющийся списком-строкой:
a = [] for i in range(n): a.append([0] * m)
Но еще проще воспользоваться генератором: создать список из n элементов, каждый из которых будет списком, состоящих из m нулей:
a = [[0] * m for i in range(n)]
В этом случае каждый элемент создается независимо от остальных (заново конструируется список [0] * m для заполнения очередного элемента списка), а не копируются ссылки на один и тот же список.
Ввод списка
Пусть программа получает на вход двумерный массив, в виде n строк, каждая из которых содержит m чисел, разделенных пробелами. Как их считать? Например, так:
a = [] for i in range(n): a.append(list(map(int, input().split())))
Или, без использования сложных вложенных вызовов функций:
a = [] for i in range(n): row = input().split() for i in range(len(row)): row[i] = int(row[i]) a.append(row)
Можно сделать то же самое и при помощи генератора:
a = [list(map(int, input().split())) for i in range(n)]
Сложный пример обработки массива
Пусть дан квадратный массив из n строк и n столбцов. Необходимо элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам a[i][j] , для которых i == j ) присвоить значение 1 , элементам, находящимся выше главной диагонали – значение 0, элементам, находящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n==4 ):
1 0 0 0 2 1 0 0 2 2 1 0 2 2 2 1
Рассмотрим несколько способов решения этой задачи. Элементы, которые лежат выше главной диагонали – это элементы a[i][j] , для которых i < j , а для элементов ниже главной диагонали i >j . Таким образом, мы можем сравнивать значения i и j и по ним определять значение a[i][j] . Получаем следующий алгоритм:
for i in range(n): for j in range(n): if i < j: a[i][j] = 0 elif i >j: a[i][j] = 2 else: a[i][j] = 1
Данный алгоритм плох, поскольку выполняет одну или две инструкции if для обработки каждого элемента. Если мы усложним алгоритм, то мы сможем обойтись вообще без условных инструкций.
Сначала заполним главную диагональ, для чего нам понадобится один цикл:
for i in range(n): a[i][i] = 1
Затем заполним значением 0 все элементы выше главной диагонали, для чего нам понадобится в каждой из строк с номером i присвоить значение элементам a[i][j] для j = i+1 , . n-1 . Здесь нам понадобятся вложенные циклы:
for i in range(n): for j in range(i + 1, n): a[i][j] = 0
Аналогично присваиваем значение 2 элементам a[i][j] для j = 0 , . i-1 :
for i in range(n): for j in range(0, i): a[i][j] = 2
Можно также внешние циклы объединить в один и получить еще одно, более компактное решение:
for i in range(n): for j in range(0, i): a[i][j] = 2 a[i][i] = 1 for j in range(i + 1, n): a[i][j] = 0
А вот такое решение использует операцию повторения списков для построения очередной строки списка. i -я строка списка состоит из i чисел 2 , затем идет одно число 1 , затем идет n-i-1 число 0 :
for i in range(n): a[i] = [2] * i + [1] + [0] * (n - i - 1)
А можно заменить цикл на генератор:
a = [[2] * i + [1] + [0] * (n - i - 1) for i in range(n)]
Форматирование вывода
В некоторых заданиях этого листка требуется выводить элементы списка аккуратными столбцами, выравнивая числа по правому краю с фиксированной шириной столбца. Это можно сделать разными способами, один из способов: использование метода rjust .
rjust — метод объекта типа str , принимающий два параметра: длину новой строки (ширина поля вывода) и символ-заполнитель: rjust(n, ch) . Например, s.rjust(10, ‘.’) . Метод возвращает новую строку, длина которой равна n символов, исходная строка находится в конце результата (то есть исходная строка “выравнивается” по правому краю), лишние позиции заполняются символом ch. Если опустить ch, то в качестве символа-заполнителя используется пробел. Если длина исходной строки была больше n, то возвращается исходная строка без изменений (строка не обрезается).
Аналогично есть методы ljust , выравнивающий строку по левому краю и center , выравнивающий строку по центру результата.
Метод join
Метод join объединяет элементы массива в строку с указанным разделителем (он будет вставлен между элементами массива). Разделитель задается параметром метода и не является обязательным. Если он не задан — по умолчанию в качестве разделителя возьмется запятая. Если вы хотите слить элементы массива без разделителя — укажите его как пустую строку » .
Синтаксис
массив.join([разделитель]);
Пример
Пусть дан некоторый массив. Давайте объединим элементы этого массива в строку с разделителем ‘-‘ :
let arr = [1, 2, 3]; let str = arr.join(‘-‘); console.log(str);
Результат выполнения кода:
Пример
А теперь давайте не укажем разделитель и по умолчанию разделителем станет запятая:
let arr = [1, 2, 3]; let str = arr.join(); console.log(str);
Результат выполнения кода:
Пример
Давайте сольем элементы массива без всякого разделителя:
let arr = [1, 2, 3]; let str = arr.join(»); console.log(str);
Результат выполнения кода:
Пример . Применение
Давайте перевернем символы строки в обратном порядке. Для этого разобьем строку в массив с помощью split по разделителю » (этот разделитель положит каждый символ строки в отдельный элемент массива), перевернем этот массив с помощью reverse и затем сольем перевернутый массив обратно с помощью join :
let str = ‘123456789’; let arr1 = str.split(»); let arr2 = arr1.reverse(); let res = arr2.join(»); console.log(res);
Результат выполнения кода:
Пример . Применение
Упростим решение предыдущей задачи — сольем все команды в цепочку:
let str = ‘123456789’; let res = str.split(»).reverse().join(»); console.log(res);
Результат выполнения кода:
Пример . Применение
Дана дата в формате ‘2025-12-31’ . Давайте сделаем из нее формат ‘31.12.2025’ . Для этого разобьем строку в массив с помощью split , перевернем этот массив с помощью reverse и затем сольем перевернутый массив обратно с помощью join :
let date = ‘2025-12-31’; let res = date.split(‘-‘).reverse().join(‘.’); console.log(res);
Результат выполнения кода:
Смотрите также
- метод split ,
который разбивает строку в массив по указанному разделителю - метод reverse ,
который изменяет порядок элементов в массиве на обратный - метод concat ,
который сливает строки в одну
Как мне вывести элементы массива в строку
Как мне подставить строку из массива в enum?
Есть массив string в котором содержатся строки dog cat bird и есть enum Animals с такими же.
Вывести элементы массива в строку, найти произведение элементов массива
В вещественном массиве C, элементы заданы на интервале (-17, 18). Вывести элементы массива в.
Массив: Вывести элементы массива в строку.
Простой вопрос, при выводи чисел в массив они пишутся в столбик, например: 1 2 3 4 и т.д. А.
Am I evil? Yes, I am!
![]()
![]()
16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,624
1 2 3
nech = [1, 2, 3, 4, 5] for i in nech: print(i, end=' ')
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от КИСК 
Как я могу вывести значения массива nech в строку?
OMG, какие не нужные вопросы вас заботят.
1 2 3
>>> print(*nech) 1 2 3 4 5 >>>
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
немогу вывести элементы из массива в строку в МЕМО1
Подскажите что нужно доделать Дано 24 целых числа. Распечатать их в обратном порядке по шесть.
Вывести в строку элементы последнего столбца двумерного массива C(m,n)
Вывести в строку элементы последнего столбца двумерного массива C(m,n). Массив заполнить случайным.

Вывести в строку элементы последнего столбца двумерного массива
Вывести в строку элементы последнего столбца двумерного массива C(m,n). Массив заполнить случайным.
Вывести элементы массива в Label1 в строку, а в Label2 — в столбик
Напишите пожалуйста полностью в LAZARUS! Задать вещественный массив с помощью генератора.
Вывести в строку элементы последнего столбца двумерного массива С
1. Вывести в строку элементы последнего столбца двумерного массива С(т, п). Массив заполнить.

Вывести во вторую строку элементы массива, значения которых не принадлежат диапазону
1.В первой строке активного листа заданы N значений одномерного массива X. Вывести во вторую строку.
Вывести в одну строку все элементы главной диагонали целочисленного массива
Вывести в одну строку все элементы главной диагонали целочисленного массива,начиная с элемента.
