Fonction intégrée Python zip()

À partir de la documentation Python 3

Itérer sur plusieurs itérables en parallèle, produisant des tuples avec un élément de chacun d'eux.

Introduction

La fonction zip() en Python est une fonction intégrée qui prend deux ou plusieurs itérables (comme des listes, des tuples ou des chaînes de caractères) et les agrège en un seul itérateur de tuples. Chaque tuple contient des éléments de tous les itérables d’entrée à la même position.

Examples

furniture = ['table', 'chair', 'rack', 'shelf']
price = [100, 50, 80, 40]

for item, amount in zip(furniture, price):
    print(f'The {item} costs ${amount}')
The table costs $100
The chair costs $50
The rack costs $80
The shelf costs $40

Other Use Cases

La fonction zip en Python fusionne plusieurs itérables en tuples.

# Combining three lists
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [True, False, True]

zipped = zip(list1, list2, list3)
print(list(zipped))
[(1, 'a', True), (2, 'b', False), (3, 'c', True)]

Unzipping

# Unzipping a zipped object
zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
list1, list2 = zip(*zipped)
print(list1)
print(list2)
(1, 2, 3)
('a', 'b', 'c')

More Examples

Zipping with Different Lengths

zip arrête de créer des tuples lorsque l’itérable le plus court est épuisé.

numbers = [1, 2, 3]
letters = ['a', 'b']

for num, letter in zip(numbers, letters):
    print(f'{num} -> {letter}')
1 -> a
2 -> b

Using zip with Dictionaries

Vous pouvez utiliser zip pour combiner des clés et des valeurs de deux listes dans un dictionnaire.

keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']

my_dict = dict(zip(keys, values))
print(my_dict)
{'name': 'Alice', 'age': 25, 'city': 'New York'}

Using zip with List Comprehensions

Vous pouvez utiliser zip dans des compréhensions de liste pour un code plus concis.

list1 = [1, 2, 3]
list2 = [4, 5, 6]

summed = [x + y for x, y in zip(list1, list2)]
print(summed)
[5, 7, 9]