Часто при работе с данными на Python возникает ситуация, когда необходимо преобразовать список кортежей в два отдельных списка, где первый список содержит первые элементы всех кортежей, а второй — вторые элементы.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Приведем пример. Допустим, есть список кортежей, каждый из которых содержит букву и соответствующее ей число:
data = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Нужно преобразовать этот список в следующий формат:
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
В Python есть встроенная функция zip(), которая позволяет решить эту задачу.
Функция zip() используется для совмещения двух и более списков в один. Она возвращает итератор кортежей, где i-ый кортеж содержит i-ый элемент из каждого из переданных списков.
x = [1, 2, 3] y = [4, 5, 6] zipped = zip(x, y) print(list(zipped)) # Выведет: [(1, 4), (2, 5), (3, 6)]
Также функция zip() может быть использована для «расстегивания» списка кортежей обратно в отдельные списки. Для этого используется оператор «*». Он позволяет преобразовать список в набор аргументов для функции.
zipped = [(1, 4), (2, 5), (3, 6)] x, y = zip(*zipped) print(list(x)) # Выведет: [1, 2, 3] print(list(y)) # Выведет: [4, 5, 6]
Таким образом, для преобразования списка кортежей в два списка можно использовать следующий код:
data = [('a', 1), ('b', 2), ('c', 3), ('d', 4)] x, y = zip(*data) result = (list(x), list(y)) print(result) # Выведет: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
В этом коде функция zip() с оператором «*» преобразует список кортежей в два отдельных кортежа. Затем каждый из этих кортежей преобразуется в список с помощью функции list().
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Добавить комментарий