Функция zip()
в Python создает итератор, который объединяет элементы из нескольких источников данных. Функция работает со списками, кортежами, множествами и словарями.
zip()
имеет множество вариантов использования. Например, это удобно, если вам нужно создать множество словарей из двух массивов, каждый из которых содержит имя и номер сотрудника.
Функция принимает итерационные элементы в качестве входных данных и возвращает итератор. Если функция zip()
не получает итерируемых элементов, она возвращает пустой итератор.
Пример функции zip()
person_numbers = [23, 30, 23, 28]
person_names = ['Владислав', 'Наталья', 'Александр', 'Юлия']
zipped_values = zip(person_numbers, person_names)
zipped_list = list(zipped_values)
print(zipped_list)
Результат:
[(23, 'Владислав'), (30, 'Наталья'), (23, 'Александр'), (28, 'Юлия')]
Данный фрагмент кода создает список кортежей, в каждом из которых содержится имя и возраст человека, мы объявляем две переменные списка, в которых пишем возраст и имена, а потом с помощью функции zip()
объединяем в одно целое, а после превращаем это в список кортежей.
Функция zip с циклом for
Вот пример использования zip()
для перебора списка:
person_numbers = [23, 30, 23, 28]
person_names = ['Владислав', 'Наталья', 'Александр', 'Юлия']
for name, age in zip(person_names, person_numbers):
print(name, age)
Результат:
Владислав 23
Наталья 30
Александр 23
Юлия 28
Давайте взглянем на возможность распаковки, функции unzip()
person_numbers = [23, 30, 23, 28]
person_names = ['Владислав', 'Наталья', 'Александр', 'Юлия']
zipped_values = zip(person_names, person_numbers)
zipped_list = list(zipped_values)
unzip_list_names, unzip_list_age = zip(*zipped_list)
print(unzip_list_names, unzip_list_age)
Получаем следующий результат в виде двух кортежей:
('Владислав', 'Наталья', 'Александр', 'Юлия') (23, 30, 23, 28)
Примечание: если исходные списки имеют разную длину, вы не получите обратно исходный список.