Найти в Дзене

Функция zip для прохода по нескольким итерируемым объектам

Статья подготовлена для студентов курса «Web-разработчик на Python» в образовательном проекте OTUS.

Иногда нам нужно пройти по нескольким спискам в одном цикле и взять из них данные с одинаковых позиций. Допустим, у нас есть два списка:

-2

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

-3

Такой подход не укладывается в python-way. Поэтому есть встроенный инструмент, чтобы сделать это лучше:

-4

Давайте рассмотрим подробней, что мы получаем, когда используем zip. Так как оттуда возвращается генератор, приведём результат к списку:

-5

Видим, что мы получили список из тюплов (кортежей), каждый из которых — пара из элементов обоих списков: первый с первым, третий с третьим и т. д., а в цикле мы распаковываем каждую пару в переменные nickname и name.

Однако помимо создания пар zip, поможет также обратно разделить пары на отдельные списки. Для этого передадим туда все пары (распакуем при помощи *):

-6

Это работает не только с парами, можно использовать необходимое количество аргументов:

-7

Получаем:

-8