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 fonction zip.
  • 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) avec list(), 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 !