Comprendre la fonction Transpose/Unzip en Python
Lorsque vous travaillez avec des données en Python, vous vous retrouverez souvent à manipuler des listes et des tuples. Une opération courante consiste à transformer une liste de tuples de 2 éléments en deux listes séparées. Cela peut être crucial pour l’analyse de données, où vous voudrez peut-être séparer les clés des valeurs ou simplement catégoriser les données pour une manipulation plus facile.
Le Problème
Imaginez que vous avez une liste de tuples comme celle-ci :
original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Votre objectif est de convertir cette liste en deux listes individuelles :
- Une liste doit contenir les premiers éléments :
['a', 'b', 'c', 'd']
- La deuxième liste doit contenir les seconds éléments :
[1, 2, 3, 4]
Cette opération peut être décrite comme « décompresser » les tuples, ou appliquer une fonction de transposition où les axes des données sont échangés.
La Solution
Heureusement, Python fournit une fonction intégrée appelée zip
qui peut aider à cela. Passons en revue comment l’utiliser à la fois en Python 2.x et 3.x.
Utiliser zip
en Python 2.x
En Python 2.x, zip
agit comme son propre inverse lorsque vous appliquez un opérateur spécial connu sous le nom d’opérateur de déballage *
. Voici comment vous pouvez l’appliquer à votre liste de tuples d’origine :
result = zip(*original)
# Le résultat sera : (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
- L’opérateur
*
décompresse effectivement le tuple en arguments séparés pour la fonctionzip
. - Cela vous donne directement la version transposée.
Utiliser zip
en Python 3.x
Python 3.x modifie légèrement le comportement de zip
en renvoyant un itérateur paresseux au lieu d’une liste. Cependant, il est toujours facile de convertir cela en une liste pour obtenir le même résultat qu’en Python 2.x. Voici le code :
result = list(zip(*original))
# Le résultat sera : (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
- En entourant
zip(*original)
aveclist()
, vous convertissez l’itérateur paresseux en un format de liste pour une utilisation facile.
Conclusion
Vous avez maintenant une bonne compréhension de la manière de transposer ou de « décompresser » une liste de tuples de 2 éléments en Python ! Que vous travailliez en Python 2.x ou 3.x, la fonction zip
, lorsqu’elle est combinée avec l’opérateur de déballage, offre une solution élégante pour séparer les éléments pour une manipulation de données plus facile.
N’hésitez pas à intégrer cette approche dans vos projets Python pour un code plus propre et plus efficace. Bon codage !