6 способов преобразовать список Python в строку
В этом руководстве вы узнаете, как использовать Python для преобразования (или объединения) списка в строку. Использование Python для преобразования списка в строку — это очень распространенная задача. Существует множество различных способов решения этой проблемы, и вы узнаете о плюсах и минусах каждого из них.
К концу этого урока вы узнаете:
Как использовать метод
.join()
для преобразования списка Python в строкуКак использовать функцию
map()
для преобразования списка Python в строкуКак работать с неоднородными списками при преобразовании списка в строку
Как использовать циклы for и генераторы списков для преобразования списка Python в строку
Какой метод является самым быстрым при присоединении списка к строке?
Содержание
Краткое напоминание о списках и строках в Python
Списки в Python представляют собой контейнерные типы данных, обладающие рядом важных атрибутов. Списки в Python:
Упорядоченный, что означает сохраняющий порядок элементов
Индексируемый, что означает, что элементы можно выбирать на основе их положения
Изменяемый, что означает, что мы можем изменять списки
Разношерстный, что означает, что они могут содержать различные типы объектов (подробнее об этом скоро!).
Списки Python создаются путем размещения элементов в квадратных скобках, разделенных запятыми. Давайте посмотрим, как мы можем создать список:
В кодовом блоке выше мы создали пример списка, который содержит строки.
Строки в Python создаются с использованием одинарных, двойных или тройных кавычек. В отличие от списков в Python, строки неизменяемы. Однако они упорядочены и поддерживают индексацию!
Давайте создадим пример строки на Python:
Мы видим, что список и строка содержат один и тот же набор английских слов. В этом уроке вы узнаете, как преобразовать список значений в более широкую строку.
Использование .join()
для преобразования списка в строку в Python
.join()
для преобразования списка в строку в PythonСтроки в Python имеют множество методов, которые можно к ним применять. Один из этих методов - метод .join()
, который позволяет использовать строку в качестве символа объединения для соединения списка значений.
Строка, к которой мы применяем метод .join()
, представляет собой символ (или символы), который будет находиться между каждым элементом в списке.
Давайте посмотрим, как можно использовать метод .join()
в Python для преобразования списка в строку
Давайте разберем, что мы сделали в приведенном выше коде:
Мы объявили наш список строк,
a_list
Затем мы создали новую переменную
a_string
, которая является результатом применения метода.join()
к пустой строке''
с передачей нашего списка значений.
Можно видеть, что это вернуло объединенную строку без пробелов между ними!
Если мы хотим разделить строки, используя символ, такой как пробел, мы можем просто применить метод .join()
к строке, содержащей этот символ!
В приведённом выше коде мы изменили строку, к которой применяем метод, с пустой строки на строку, содержащую только пробел, ' '
Проблемы с использованием .join() для преобразования списка в строку в Python
Метод .join()
ожидает, что все элементы в списке будут строками. Если какой-либо из элементов не является строкой, метод вызовет исключение TypeError
, уведомляя пользователя о том, что ожидалась строка.
Посмотрим, как это выглядит:
В следующих разделах вы узнаете, как решить эту ошибку.
Использование map() для преобразования списка в строку в Python
Функция map()
позволяет сопоставить весь список значений с другой функцией. Это позволяет легко работать с неоднородными списками (как мы делали выше). Таким образом, мы можем предотвратить возникновение TypeErrors
, если есть данные нестрокового типа.
Чтобы узнать больше о функции map()
в Python, прочитайте мое подробное руководство. Давайте посмотрим, как мы можем использовать функцию map()
с методом .join()
, чтобы преобразовать список:
Давайте разберем, что мы сделали в блоке кода выше:
Мы создали список, содержащий как строки, так и целое
В Варианте 1 (который работает аналогично, хотя и немного более многословно), мы создали новый объект сопоставления.
Объект сопоставления,
mapped
, использует функциюmap()
и принимает вызываемую функцию, которую мы хотим применить к каждому элементу нашего списка.Затем мы передаем этот новый объект карты в метод
.join()
, который объединяет список в строку.
В следующем разделе вы узнаете, как использовать цикл for для преобразования списка в строку.
Использование цикла For для преобразования списка в строку в Python
Использование for loop позволяет вам перебрать каждый элемент в списке и добавить его к новой строке. Это означает, что вы можете легко объединить список значений.
Использование цикла For со списками, состоящими только из строк
Давайте рассмотрим, как это работает при работе со списками, которые содержат только строки.
Использование цикла For с неоднородными списками
Так же как в нашем предыдущем примере, это вызовет TypeError
, если мы попытаемся объединить значения, которые не являются строками. Чтобы исправить эту ошибку, мы можем либо:
Проверьте, является ли элемент строкой, и если
Примените функцию
str()
к каждому элементу в списке.
Давайте посмотрим, как можно использовать второй вариант, так как он требует меньше кода:
Использование цикла For с разделителем для объединения списка в строку
Одно из наблюдений заключается в том, что мы просто соединяем элементы без какого-либо разделителя. Мы также можем включить разделитель в цикл for, чтобы сделать наш текст более читабельным.
Давайте посмотрим, как мы можем разделить каждый элемент пробелом, чтобы сделать наш текст более чистым:
Давайте разберем, что мы сделали в кодовом блоке выше:
Мы объявили наш список и пустую строку
Затем мы перебрали каждый элемент и добавили пробел и строковое представление каждого элемента к строке.
Затем мы применили метод
.strip()
к нашей финальной строке, чтобы удалить ведущий пробел.
Выражение генератора списка для конкатенации списка в строку.
Использование List Comprehension для преобразования списка в строку в Python
Мы можем легко использовать списковые включения в сочетании с методом .join()
, чтобы преобразовать список в строку. Это позволяет работать со списками, которые содержат данные нестроковых типов.
Помните, когда мы пытаемся использовать метод .join()
со списками, содержащими данные нестрокового типа, возникает TypeError
. Мы можем исправить эту ошибку, сначала преобразовав каждый элемент списка в строку, используя функцию str()
в списковом включении. Давайте посмотрим, как это выглядит:
В приведенном выше блоке кода мы использовали списочное понимание для создания строковой копии каждого элемента в списке. Затем мы передали этот новый список в наш вызов метода .join()
.
Использование списковых включений — это чистый и быстрый способ модификации элементов списка.
Какой самый быстрый способ преобразовать список в строку в Python?
В этом разделе мы изучим, какой самый быстрый метод преобразования списка 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()
для объединения списков в строки. Наконец, вы узнали, какой из этих методов является самым быстрым.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с учебными пособиями ниже:
Last updated