Статья подготовлена для студентов курса «Web-разработчик на Python» в образовательном проекте OTUS.
Иногда нам нужно пройти по нескольким спискам в одном цикле и взять из них данные с одинаковых позиций. Допустим, у нас есть два списка:
И перед нами стоит задача обработать пары. К сожалению, в коде новичков часто можно встретить такие подходы:
Такой подход не укладывается в python-way. Поэтому есть встроенный инструмент, чтобы сделать это лучше:
Давайте рассмотрим подробней, что мы получаем, когда используем zip. Так как оттуда возвращается генератор, приведём результат к списку:
Видим, что мы получили список из тюплов (кортежей), каждый из которых — пара из элементов обоих списков: первый с первым, третий с третьим и т. д., а в цикле мы распаковываем каждую пару в переменные nickname и name.
Однако помимо создания пар zip, поможет также обратно разделить пары на отдельные списки. Для этого передадим туда все пары (распакуем при помощи *):
Это работает не только с парами, можно использовать необходимое количество аргументов:
Получаем: