# Одновременный перебор последовательностей в Python

Чтобы перебрать сразу несколько последовательностей, можно применить функцию `zip`. При этом все элементы последовательностей будут выводиться в виде кортежей, состоящего из элементов с одинаковым индексом.

## Пример

Пусть у нас есть два списка:

`lst1 = ['a', 'b', 'c'] lst2 = [1, 2, 3]`

Давайте выведем попарно их элементы:

`for el in zip(lst1, lst2): print(el)`

Результат выполненного кода:

`('a', 1) ('b', 2) ('c', 3)`

## Пример

Перебирать можно и последовательности разного типа. Давайте пропустим через цикл и функцию `zip` множество и кортеж:

`st = {'a', 'b', 'c'} tlp = (1, 2, 3) for el in zip(st, tlp): print(el)`

Результат выполненного кода:

`('a', 1) ('b', 2) ('c', 3)`

## Пример

Если же длина одной последовательности больше второй, то перебираться они будут по элементам меньшей:

`lst1 = ['a', 'b', 'c', 'd', 'e'] lst2 = [1, 2, 3, 4] for el in zip(lst1, lst2): print(el)`

Результат выполненного кода:

`('a', 1) ('b', 2) ('c', 3) ('d', 4)`

## Пример

С помощью функции `zip` можно перебрать и три последовательности. Для этого в параметре функции перечисляем их все через запятую:

`lst1 = ['a1', 'b1', 'c1'] lst2 = ['a2', 'b2', 'c2'] lst3 = ['a3', 'b3', 'c3'] for el in zip(lst1, lst2, lst3): print(el)`

Результат выполненного кода:

`('a1', 'a2', 'a3') ('b1', 'b2', 'b3') ('c1', 'c2', 'c3')`

## Практические задачи

Даны два списка:

`tst1 = [1, 3, 5] tst2 = [2, 4, 6]`

Выведите их элементы попарно в виде кортежа.

Даны два списка:

`tst1 = ['a', 'b', 'c'] tst2 = ['d', 'e', 'f']`

Получите из них следующий список:

`['a', '1', 'b', '2', 'c', '3']`

Даны три списка:

`tst1 = [11, 12, 13, 14] tst2 = [21, 22, 23, 24] tst3 = [31, 32, 33, 34]`

Сложите соответствующие элементы этих списков и результат запишите в новый список. Суммирование будет идти по следующему принципу:

`[ 11 + 21 + 31, 12 + 22 + 32, 13 + 23 + 33, 14 + 24 + 34, ]`
← →
↑