Utiliser * et zip pour « décompresser »
Vous savez utiliser zip() et afficher les valeurs d'un objet zip. Excellent !
Explorons zip() un peu plus. Il n'existe pas de fonction unzip qui fasse l'inverse de zip(). Par contre, on peut inverser ce qui a été « compressé » avec zip() en réutilisant zip() avec un petit coup de pouce de * ! L'opérateur * décompresse un itérable, comme une liste ou un tuple, en arguments positionnels dans un appel de fonction.
Dans cet exercice, vous utiliserez * dans un appel à zip() pour décompresser les tuples produits par zip().
Deux tuples de chaînes, mutants et powers, ont été préchargés.
Cette activité fait partie du cours
Boîte à outils Python
Instructions de l’exercice
- Créez un objet
zipen appelantzip()surmutantspuispowers, dans cet ordre. Assignez le résultat àz1. - Affichez les tuples de
z1en les décompressant en arguments positionnels à l'aide de l'opérateur*dans un appel àprint(). - Comme l'appel précédent à
print()aura épuisé les éléments dez1, recréez l'objetzipdéfini plus tôt et assignez de nouveau le résultat àz1. - « Décompressez » les tuples de
z1en les décompressant en arguments positionnels à l'aide de l'opérateur*dans un appel àzip(). Assignez les résultats àresult1etresult2, dans cet ordre. - Les dernières instructions
print()affichent le résultat de la comparaison deresult1avecmutantset deresult2avecpowers. Cliquez sur "Soumettre la réponse" pour voir siresult1etresult2décompressés sont équivalents àmutantsetpowers, respectivement.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create a zip object from mutants and powers: z1
z1 = ____
# Print the tuples in z1 by unpacking with *
print(____)
# Re-create a zip object from mutants and powers: z1
z1 = ____
# 'Unzip' the tuples in z1 by unpacking with * and zip(): result1, result2
result1, result2 = ____
# Check if unpacked tuples are equivalent to original tuples
print(result1 == mutants)
print(result2 == powers)