На этом шаге мы рассмотрим назначение и использование этой функции.
Встроенная функция zip() на каждой итерации возвращает кортеж, содержащий элементы последовательностей, которые расположены на одинаковом смещении. Функция возвращает объект, поддерживающий итерации (а не список, как это было ранее в Python 2). Чтобы получить список в версии Python 3, необходимо результат передать в функцию list().
Формат функции:
zip(<Последовательность1>[, ..., <ПоследовательностьN>])
Пример:
>>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9]) <zip object at 0x00FCAC88> >>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])) [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Если количество элементов в последовательностях будет разным, то в результат попадут только элементы, которые существуют во всех последовательностях на одинаковом смещении:
>>> list(zip([1, 2, 3], [4, 6], [7, 8, 9, 10])) [(1, 4, 7), (2, 6, 8)]
В качестве еще одного примера переделаем нашу программу из предыдущего шага, в которой выполняется суммирование элементов трех списков, и используем функцию zip() вместо функции map():
arr1 = [1, 2, 3, 4, 5] arr2 = [10, 20, 30, 40, 50] arr3 = [100, 200, 300, 400, 500] arr = [x + y + z for (x, y, z) in zip(arr1, arr2, arr3)] print(arr)
Результат выполнения:
[111, 222, 333, 444, 555]
На следующем шаге мы рассмотрим функцию filter().