L'un des plus grands avantages de Python est le grand ensemble d'outils qu'il offre pour travailler avec ses types de données. Lorsque nous travaillons avec plusieurs listes, il est parfois nécessaire de les parcourir en boucle et d'effectuer des opérations basées sur les valeurs de toutes les listes. Cela peut être fait en itérant sur les indices puis en accédant aux éléments, ou en utilisant la fonction intégrée zip.
heights = [180, 190, 178]
weights = [89, 92, 77]
for i in range(len(heights)):
h, w = heights[i], weights[i]
print(h, '=>', w)
heights = [180, 190, 178]
weights = [89, 92, 77]
for h, w in zip(heights, weights):
print(h, '=>', w)
La fonction zip crée des tuples à partir des éléments des listes qui lui sont passées. Elle peut gérer un nombre arbitraire de listes. Ainsi, nous pouvons avoir zip(list1, list2, list3, ..., listn). Elle créera des tuples contenant chacun n éléments s'il y a n listes passées à zip.
Notez qu'elle zippe les éléments jusqu'à la liste la plus courte. Donc, si nous fournissons deux listes dont l'une est plus courte que l'autre, les derniers éléments supplémentaires de la seconde seront ignorés.
Si nous souhaitons être stricts et ne pas permettre de tronquer les listes les plus longues, nous pouvons demander à Python de lever une erreur en fournissant un argument supplémentaire strict=True:
heights = [180, 190]
names = ['Bob', 'Liza', 'Anna']
for h, name in zip(heights, names, strict=True):
print(name, '=>', h)
# ValueError: zip() argument 2 is longer than argument 1
Défi
L'entrée contient 3 listes, chacune sur une ligne distincte. Les éléments des listes sont séparés par un espace. Il est garanti que les listes ont le même nombre d'éléments.
Le programme doit afficher une nouvelle liste qui contient le produit de ces 3 listes.