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]