6 способов преобразовать список Python в строку
Last updated
Last updated
В этом руководстве вы узнаете, как использовать Python для преобразования (или объединения) списка в строку. Использование Python для преобразования списка в строку — это очень распространенная задача. Существует множество различных способов решения этой проблемы, и вы узнаете о плюсах и минусах каждого из них.
К концу этого урока вы узнаете:
Как использовать метод .join()
для преобразования списка Python в строку
Как использовать функцию map()
для преобразования списка Python в строку
Как работать с неоднородными списками при преобразовании списка в строку
Как использовать циклы for и генераторы списков для преобразования списка Python в строку
Какой метод является самым быстрым при присоединении списка к строке?
Содержание
Упорядоченный, что означает сохраняющий порядок элементов
Индексируемый, что означает, что элементы можно выбирать на основе их положения
Изменяемый, что означает, что мы можем изменять списки
Разношерстный, что означает, что они могут содержать различные типы объектов (подробнее об этом скоро!).
Списки Python создаются путем размещения элементов в квадратных скобках, разделенных запятыми. Давайте посмотрим, как мы можем создать список:
В кодовом блоке выше мы создали пример списка, который содержит строки.
Строки в Python создаются с использованием одинарных, двойных или тройных кавычек. В отличие от списков в Python, строки неизменяемы. Однако они упорядочены и поддерживают индексацию!
Давайте создадим пример строки на Python:
Мы видим, что список и строка содержат один и тот же набор английских слов. В этом уроке вы узнаете, как преобразовать список значений в более широкую строку.
.join()
для преобразования списка в строку в PythonСтроки в Python имеют множество методов, которые можно к ним применять. Один из этих методов - метод .join()
, который позволяет использовать строку в качестве символа объединения для соединения списка значений.
Строка, к которой мы применяем метод .join()
, представляет собой символ (или символы), который будет находиться между каждым элементом в списке.
Давайте посмотрим, как можно использовать метод .join()
в Python для преобразования списка в строку
Давайте разберем, что мы сделали в приведенном выше коде:
Мы объявили наш список строк, a_list
Затем мы создали новую переменную a_string
, которая является результатом применения метода .join()
к пустой строке ''
с передачей нашего списка значений.
Можно видеть, что это вернуло объединенную строку без пробелов между ними!
Если мы хотим разделить строки, используя символ, такой как пробел, мы можем просто применить метод .join()
к строке, содержащей этот символ!
В приведённом выше коде мы изменили строку, к которой применяем метод, с пустой строки на строку, содержащую только пробел, ' '
Метод .join()
ожидает, что все элементы в списке будут строками. Если какой-либо из элементов не является строкой, метод вызовет исключение TypeError
, уведомляя пользователя о том, что ожидалась строка.
Посмотрим, как это выглядит:
В следующих разделах вы узнаете, как решить эту ошибку.
Чтобы узнать больше о функции map()
в Python, прочитайте мое подробное руководство. Давайте посмотрим, как мы можем использовать функцию map()
с методом .join()
, чтобы преобразовать список:
Давайте разберем, что мы сделали в блоке кода выше:
Мы создали список, содержащий как строки, так и целое
В Варианте 1 (который работает аналогично, хотя и немного более многословно), мы создали новый объект сопоставления.
Объект сопоставления, mapped
, использует функцию map()
и принимает вызываемую функцию, которую мы хотим применить к каждому элементу нашего списка.
Затем мы передаем этот новый объект карты в метод .join()
, который объединяет список в строку.
В следующем разделе вы узнаете, как использовать цикл for для преобразования списка в строку.
Давайте рассмотрим, как это работает при работе со списками, которые содержат только строки.
Так же как в нашем предыдущем примере, это вызовет TypeError
, если мы попытаемся объединить значения, которые не являются строками. Чтобы исправить эту ошибку, мы можем либо:
Проверьте, является ли элемент строкой, и если
Примените функцию str()
к каждому элементу в списке.
Давайте посмотрим, как можно использовать второй вариант, так как он требует меньше кода:
Одно из наблюдений заключается в том, что мы просто соединяем элементы без какого-либо разделителя. Мы также можем включить разделитель в цикл for, чтобы сделать наш текст более читабельным.
Давайте посмотрим, как мы можем разделить каждый элемент пробелом, чтобы сделать наш текст более чистым:
Давайте разберем, что мы сделали в кодовом блоке выше:
Мы объявили наш список и пустую строку
Затем мы перебрали каждый элемент и добавили пробел и строковое представление каждого элемента к строке.
Затем мы применили метод .strip()
к нашей финальной строке, чтобы удалить ведущий пробел.
Выражение генератора списка для конкатенации списка в строку.
Помните, когда мы пытаемся использовать метод .join()
со списками, содержащими данные нестрокового типа, возникает TypeError
. Мы можем исправить эту ошибку, сначала преобразовав каждый элемент списка в строку, используя функцию str()
в списковом включении. Давайте посмотрим, как это выглядит:
В приведенном выше блоке кода мы использовали списочное понимание для создания строковой копии каждого элемента в списке. Затем мы передали этот новый список в наш вызов метода .join()
.
Использование списковых включений — это чистый и быстрый способ модификации элементов списка.
В этом разделе мы изучим, какой самый быстрый метод преобразования списка Python в строку. Для проверки этого мы загрузим список из двадцати миллионов элементов и преобразуем его в строку.
На первом этапе тестирования мы будем использовать гетерогенный список, который требует преобразования элементов в строки, а затем объединения их в результирующую строку. Эти тесты более вероятны, так как часто невозможно гарантировать, что каждый элемент будет строкой.
join()
с генератором списков
2.5 s
.join()
вместе с функцией map()
1.69 s
Циклы for
2.97 s
Можно увидеть, что метод .join()
с функцией map()
является самым быстрым, примерно на 33% быстрее по сравнению
Теперь давайте рассмотрим объединение гетерогенных списков в строку. Чтобы сделать это, нам нужно сравнить метод .join()
и метод цикла
.join()
205 ms
Циклы for
1.43 s
В этом уроке вы научились использовать Python для преобразования списка в строку. Сначала вы узнали, как это сделать с помощью метода строки .join()
. Затем вы узнали о сложностях работы со списками, которые могут содержать не только строки. Вы научились использовать циклы for
, списковые включения и функцию map()
для объединения списков в строки. Наконец, вы узнали, какой из этих методов является самым быстрым.
Чтобы узнать больше о связанных темах, ознакомьтесь с учебными пособиями ниже:
представляют собой контейнерные типы данных, обладающие рядом важных атрибутов. Списки в Python:
позволяет сопоставить весь список значений с другой функцией. Это позволяет легко работать с неоднородными списками (как мы делали выше). Таким образом, мы можем предотвратить возникновение TypeErrors
, если есть данные нестрокового типа.
Использование позволяет вам перебрать каждый элемент в списке и добавить его к новой строке. Это означает, что вы можете легко объединить список значений.
Мы можем в сочетании с методом .join()
, чтобы преобразовать список в строку. Это позволяет работать со списками, которые содержат данные нестроковых типов.