J’ai une liste de tuples 2-point, et je voudrais convertir en 2 listes où la première contient le premier élément de chaque tuple et la deuxième liste détient le deuxième élément.
Par exemple :
Y a-t-il une fonction intégrée qui fait cela ?
J’ai une liste de tuples 2-point, et je voudrais convertir en 2 listes où la première contient le premier élément de chaque tuple et la deuxième liste détient le deuxième élément.
Par exemple :
Y a-t-il une fonction intégrée qui fait cela ?
``est son propre inverse ! Si vous utilisez le special * opérateur.
La façon dont cela fonctionne est en appelant `` avec les arguments :
... sauf les arguments sont passés à `` directement (après être converti à un tuple), donc il n’y a aucun besoin de s’inquiéter du nombre d’arguments devient trop grand.
Vous pouvez également faire de
result = ([ a for a,b in original ], [ b for a,b in original ])
Il devrait échelle de mieux. Surtout si Python fait bien sur pas d'allonger la liste des compréhensions sauf si nécessaire.
(En passant, il fait une 2-tuple (paire) de listes, plutôt qu'une liste de tuples, comme zip
.)
Si les générateurs au lieu de listes réelles sont ok, ce serait de faire:
result = (( a for a,b in original ), ( b for a,b in original ))
Les générateurs de ne pas grignoter dans la liste jusqu'à ce que vous demandez pour chaque élément, mais d'un autre côté, ils ne conserver les références à la liste d'origine.
Si vous avez des listes qui ne sont pas la même longueur, vous ne pouvez pas utiliser zip selon les Patricks réponse. Cela fonctionne :
Mais avec des longueurs différentes listes, zip tronque chaque élément à la longueur de la liste plus courte :
Vous pouvez utiliser la carte sans fonction pour remplir vides résultats avec aucun :
Cependant, zip() est légèrement plus rapide.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.