Рубрики
Без рубрики

Как использовать соединение Python () в списке объектов (не строк)?

Самый питонический способ объединить список объектов – это выражение ».join (str (x) для x в lst), который преобразует каждый объект в строку с помощью функции встроенного str (…) в выражении генератора Отказ Вы можете объединить результирующий список строк, используя метод join () в пустой строке в качестве разделителя. Результат … Как использовать соединение Python () в списке объектов (не строк)? Подробнее “

Автор оригинала: Chris.

Самый питонический способ объединить список объектов – это выражение ” .join (str (x) для х в лсе) который преобразует каждый объект в строку с помощью встроенного str (…) Функция в выражении генератора. Вы можете объединить результирующий список строк, используя присоединиться() Метод в пустой строке в качестве разделителя. Результатом представляет собой одно строковое значение, которое является конкатенацией строковых представлений объектов.

Письмо Pythonic Code находится в самом сердце эффективного кодера, и если вы выберете неправильные способы решения проблемы, вы откроете себя к критике и борьбе на протяжении всей вашей программированной карьеры. Итак, какой самый питонический способ решения следующей проблемы?

Проблема : Учитывая Список объектов. Как ConcateNate Строковые представления этих объектов?

Пример : У вас есть следующий список объектов.

class Obj:
    def __init__(self, val):
        self.val = val

    def __str__(self):
        return str(self.val)

lst = [Obj(0), Obj(1), Obj(2), Obj(4)]

Вы хотите получить следующий результат объединенных строковых представлений объектов в списке.

0124

Хочет играть? Запустите следующий интерактивный код оболочки:

Упражнение : Запустите интерактивный фрагмент кода. Какой метод вам нравится больше всего?

Способ 1: Присоединяйтесь + список пониманий + утра

Этот метод использует три функции Python.

Во-первых, String.join (ИТЕРАЛ) Метод ожидает ИТЕРИТЕЛЬНО строк в качестве ввода и объединения те, которые используют нить разделитель. Вы можете узнать больше о функции join () в нашем руководстве в Ultimate Blog.

Во-вторых, понимание списка – это способ создания списков Python в одной строке. Вы используете синтаксис [Выражение экспрессии +] Отказ

  • В выражение Вы определяете, как каждый элемент должен быть изменен перед добавлением его в новый список.
  • В Заявление , вы определяете, какие элементы изменяют и добавляют в список в первую очередь.

Вы можете прочитать больше о понимании списка в подробном руководстве Finxter по теме.

В-третьих, str (...) Функция преобразует любой объект Python в строковое представление. Если вы определите свои пользовательские объекты, вы должны перезаписать __str __ () Способ настроить то, как именно ваши объекты представлены как строки.

Объединение этих трех функций приводит к следующему простому решению для объединения строковых представлений списка объектов.

print(''.join([str(x) for x in lst]))
# 0124

Но есть небольшое упрощение, скрывающееся вокруг. Читайте дальше, чтобы узнать, какой!

Способ 2: соединение + генератор экспрессии + утра

Предыдущий метод показал достаточно эффективный способ объединения строковых представлений некоторых объектов, используя Присоединяйтесь () Функция строк Python. Как Присоединяйтесь () Функция ожидает Список строк , вам нужно преобразовать все объекты х в простые строки, используя ул (х) функция.

Тем не менее, нет необходимости создавать отдельный список, в котором вы храните строковые представления. Преобразование одного объект Достаточно, потому что функция объединения требуется только утечкой, как вход и не обязательно А Список Python . (Все списки Python являются имиталы, но не все, что есть списки Python.)

Чтобы освободить память, вы можете использовать выражение генератора (без квадратных кронштейнов, необходимых для создания списка):

print(''.join(str(x) for x in lst))
# 0124

В отличие от способа 1, это гарантирует, что исходный список не существует в памяти дважды – один раз в виде списка объектов и один раз в виде списка строковых представлений этих точных объектов. Следовательно, этот метод можно считать самым пифитонным.

Способ 3: соединение + генератор экспрессия + пользовательское изображение строки

Небольшая модификация предыдущей версии – использовать собственное собственное представление строки, а не тот, который реализован на __str__ метод.

print(''.join(str(x.val) for x in lst))
# 0124

Это дает вам некоторую гибкость, как вы можете представлять каждый объект для вашего конкретного приложения.

Метод 4: Присоединяйтесь + карта + лямбда

Карта () Функция превращает каждый кортеж в строковое значение, а Присоединяйтесь () Метод преобразует Коллекция строк до одной строки, используя данный разделитель '-' Отказ Если вы забудете преобразовать каждый кортеж в строку с карта () Функция, вы получите Типеррор потому что Присоединяйтесь () Метод ожидает коллекции строк.

Лямбда функции являются анонимными функциями, которые не определены в пространство имен (У них нет имен). Синтаксис: лямбда <имя аргумента (ы)>: Отказ Далее вы увидите пример, где каждый аргумент функции отображается на его строковое представление.

print(''.join(map(lambda x: str(x), lst)))
# 0124

Этот метод является более функциональным стилем программирования – и некоторые кодеры Python предпочитают, что. Тем не менее, создатель Python Guido Van Rossum предпочитал понимание списка по функциональному программированию из-за читаемости. Вот почему методы 1-3 должны быть предпочтительными в целом.

Если вы абсолютно хотите принять функциональное программирование, используйте следующую версию:

Метод 5: Join + Map + Str

Нет необходимости использовать функцию лямбда для преобразования каждого элемента списка в строковое представление – если есть встроенная функция, которая уже выполняет именно это: str (...) Функция вы уже видели!

print(''.join(map(str, lst)))
# 0124

Из-за его Красительность и элегантность проезжая ул ...| Имя функции как аргумент функции в карта Функция - самый питон функционал способ решения этой проблемы.

Способ 6: простая петля + ул. (Наивный)

Конечно, вы также можете решить проблему в негазированном виде, используя простые для петли и создать строку:

s = ''
for x in lst:
    s += str(x)
print(s)
# 0124

Но это не только меньше краткий , это также менее эффективно. Итак, мастер-кодер в Python никогда не будет использовать такой метод!

Если вы хотите стать мастером Python Master, проверьте мой бесплатный курс электронной почты на глубине Python. Присоединяйтесь к десяткам тысяч амбициозных кодеров Python и станьте питоном Master автоматическим способом!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/how-to-use-pythons-join-function-on-a-list-of-objects-rather-than-strings/”