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

Как объединить списки в список кортежей? [6 Pythonic Ways]

Самый пифитонический способ объединить несколько списков l0, l1, …, ln в список кортежей (сгруппировка i-го элементов) – использовать функцию zip () zip (l0, l1, …, ln ). Если вы храните списки в списке списков LST, напишите ZIP (* lst), чтобы распаковать все внутренние списки в функцию zip. L1 … Как объединить списки в список кортежей? [6 Pythonic Ways] Подробнее »

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

Самый питонический способ объединить несколько списков l0, l1, …, вспомогательный в список кортежей (группировка вместе то i -ные элементы) – использовать zip () функция zip (l0, l1, …, ln) . Если вы храните списки в списке списков лишенство , записывать zip (* lst) Распаковать все внутренние списки в функцию ZIP.

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l = list(zip(l1, l2))
print(l)
# [(1, 4), (2, 5), (3, 6)]

Урожественное использование встроенных данных Python данных является неотъемлемой частью вашего образования Python. В этом руководстве показано, как вы можете объединить несколько списков в представлении «столбца» – список кортежей. Изучая эти шесть разных способов, вы не только понимаете, как решить эту конкретную проблему, вы также получите лучший кодер в целом.

Проблема : Учитывая ряд списков L1 , L2 , …, ln Отказ Как объединить их в список кортежей (столбец)?

Пример : Скажем, вы хотите объединить следующие списки

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

в список кортежей

[(0, 1, 2), 
 ('Alice', 'Bob', 'Liz'), 
 (4500.0, 6666.66, 9999.99)]

В этом руководстве показано различные способы объединения нескольких списков в список кортежей в Python 3. Вы можете получить быстрый обзор в нашей интерактивной оболочке Python:

Упражнение : Какой метод нуждается в наименьшем количестве символов?

Метод 1: ZIP-функция

Самый питонический способ объединяет несколько списков в список кортежей, является функцией ZIP. Это достигает этого в одной строке кода – пока читается, лаконичный и эффективный.

ZIP () Функция принимает один или несколько поручений и агрегирует их в одном, объединив I-Th значений каждого потенциала в кортеж. Например, Zip вместе перечислены [1, 2, 3] и [4, 5, 6] к [(1,4), (2,5), (3,6)] .

Вот решение кода:

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

print(list(zip(l0, l1, l2)))

Вывод является следующим списком кортежей:

[(0, 1, 2), ('Alice', 'Bob', 'Liz'), (4500.0, 6666.66, 9999.99)]

Обратите внимание, что возвращаемое значение zip () Функция – это Zip объект. Вам нужно преобразовать его в список, используя список(...) Конструктор для создания Список кортежи Отказ

Если вы сохранили входные списки в одном списке списков, следующий метод лучше всего для вас!

Способ 2: функция ZIP с распаковкой

Вы можете использовать Звездочный оператор * lst распаковать все внутренние элементы из данного списка lst Отказ Особенно, если вы хотите объединить много разных списков, это может значительно уменьшить длину вашего кода. Вместо письма zip (lst [0], lst [1], ..., lst [n]) упростить zip (* lst) Распаковать все внутренние списки в функцию ZIP и выполнить то же самое!

lst = [[0, 'Alice', 4500.00],
       [1, 'Bob', 6666.66],
       [2, 'Liz', 9999.99]]
print(list(zip(*lst)))

Это генерирует список кортежей:

[(0, 1, 2), ('Alice', 'Bob', 'Liz'), (4500.0, 6666.66, 9999.99)]

Я бы рассмотрел, используя zip () Функция с распаковкой самого пифитонного способа объединить несколько списков в список кортежей.

Способ 3: Понимание списка

Понимание списка является компактным способом создания списков. Простая формула – [Выражение + контекст] Отказ

  • Выражение : Что делать с элементом каждого списка?
  • Контекст : Какие элементы для выбора? Контекст состоит из произвольного количества для и Если заявления.

Пример [X для X в диапазоне (3)] Создает список [0, 1, 2] .

Связанная статья : Вы можете узнать больше о понимании списка в My Ultimate Guide в этом блоге.

Вы можете использовать прямое заявление о понимании списка [(l0 [i], l1 [i], l2 [i]) для i в пределах диапазона (len (l0))] Чтобы объединить несколько списков в список кортежей:

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

print([(l0[i], l1[i], l2[i]) for i in range(len(l0))])

Вывод производит объединенный список кортежей:

[(0, 1, 2), ('Alice', 'Bob', 'Liz'), (4500.0, 6666.66, 9999.99)]

Этот метод короткий и эффективный. Это может быть не слишком читаемое для вас, если вы начинающий кодер, но усовершенствованные кодеры обычно не имеют проблем, понимающих этот одноклассник. Если вы любите узнать все, есть около одноклассников Python Code Snapets, проверить мою новую книгу « Python One-listers » (Опубликован с издателем San Francisco Nostarch в 2020 году).

Способ 4: простая петля

Конечно, вы можете пропустить все модные Python и просто используйте простую петлю! Вот как это работает:

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

lst = []
for i in range(len(l0)):
    lst.append((l0[i], l1[i], l2[i]))
print(lst)

Вывод является объединенным списком кортежей:

[(0, 1, 2), ('Alice', 'Bob', 'Liz'), (4500.0, 6666.66, 9999.99)]

Особенно кодерам, которые приезжают в Python с другого языка программирования, такие как GO, C ++ или Java, как этот подход. Они привыкли писать петли, и они могут быстро понять, что происходит в этом фрагменте кода.

Вы можете визуализировать выполнение этого фрагмента кода в интерактивном виджете:

Упражнение : Нажмите «Далее», чтобы увидеть, как разворачивается использование памяти при запуске кода.

Метод 5: перечислять

перечислять () Метод считается Лучший стиль Python Во многих сценариях – например, если вы хотите повторить все индексы списка. На мой взгляд, это немного лучше, чем использование Диапазон (Len (L)) . Вот как вы можете использовать перечислять () В вашем коде, чтобы объединить несколько списков в один список кортежей:

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

lst = []
for i,x in enumerate(l0):
    lst.append((x,l1[i],l2[i]))
print(lst)

Вывод – это список кортежей:

[(0, 1, 2), ('Alice', 'Bob', 'Liz'), (4500.0, 6666.66, 9999.99)]

Все еще не устраивает? Давайте посмотрим на функциональное программирование.

Метод 6: карта + лямбда

С Python карта () Функция, вы можете применить определенную функцию для каждого элемента итеративного. Требуется два аргумента:

  • Функция : В большинстве случаев это лямбда функция Вы определяете на лету. Это функция, которую вы собираетесь применить к каждому элементу …
  • ИТЕРИТЕЛЬНО : Это намерение, которое вы преобразуете в новый, если каждый элемент является результатом приложенного карта () функция.

Результатом является объект карты . Что многие кодеры не знают, это то, что карта () Функция также позволяет нескольким потерабам. В этом случае функция лямбда предпринимает несколько аргументов – один для каждого повторного назначения. Затем он создает ущерба для кортежей и возвращает это в результате.

Вот как вы можете создать список кортежей из нескольких заданных списков:

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

lst = list(map(lambda x, y, z: (x, y, z), l0, l1, l2))
print(lst)

Вывод является объединенным списком кортежей:

[(0, 1, 2), ('Alice', 'Bob', 'Liz'), (4500.0, 6666.66, 9999.99)]

Это как эффективный, так и читаемый способ объединить несколько списков в список кортежей. Тот факт, что это не известно, что использует карта () Функция с несколькими аргументами не делает это менее красивым.

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

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

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

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

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

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

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

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

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

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

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

Оригинал: “https://blog.finxter.com/how-to-merge-lists-into-a-list-of-tuples/”