Python: распаковка списка/кортежа пар в два списка/кортежа

Чтобы распаковать список или кортеж пар в два отдельных списка или кортежа в Python, вы можете использовать различные методы. Вот несколько примеров:

Метод 1: использование цикла for

pairs = [(1, 'apple'), (2, 'banana'), (3, 'orange')]
# Unpacking into two lists
numbers = []
fruits = []
for pair in pairs:
    number, fruit = pair
    numbers.append(number)
    fruits.append(fruit)
print(numbers)  # [1, 2, 3]
print(fruits)   # ['apple', 'banana', 'orange']

Метод 2: использование функции zip() с оператором звезды

pairs = [(1, 'apple'), (2, 'banana'), (3, 'orange')]
# Unpacking into two lists
numbers, fruits = zip(*pairs)
print(list(numbers))  # [1, 2, 3]
print(list(fruits))   # ['apple', 'banana', 'orange']

Метод 3. Использование списков

pairs = [(1, 'apple'), (2, 'banana'), (3, 'orange')]
# Unpacking into two lists
numbers = [pair[0] for pair in pairs]
fruits = [pair[1] for pair in pairs]
print(numbers)  # [1, 2, 3]
print(fruits)   # ['apple', 'banana', 'orange']

Метод 4: использование функции unzip() из модуля itertools (доступно в Python 3.10 и более поздних версиях)

from itertools import unzip
pairs = [(1, 'apple'), (2, 'banana'), (3, 'orange')]
# Unpacking into two lists
numbers, fruits = unzip(pairs)
print(numbers)  # [1, 2, 3]
print(fruits)   # ['apple', 'banana', 'orange']

Метод 5. Использование функции map() с лямбда-выражением

pairs = [(1, 'apple'), (2, 'banana'), (3, 'orange')]
# Unpacking into two lists
numbers, fruits = map(lambda x: x[0], pairs), map(lambda x: x[1], pairs)
print(list(numbers))  # [1, 2, 3]
print(list(fruits))   # ['apple', 'banana', 'orange']

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