web-dev-qa-db-fra.com

Comment compresser des listes dans une liste

Je souhaite compresser la liste des listes suivante:

>>> Zip([[1,2], [3,4], [5,6]])
[[1,3,5], [2,4,6]]

Cela pourrait être réalisé avec l'implémentation actuelle de Zip uniquement si la liste est divisée en composants individuels:

>>> Zip([1,2], [3,4], [5,6])
   (1, 3, 5), (2, 4, 6)]

Impossible de comprendre comment diviser la liste et transmettre les éléments individuels à Zip. Une solution fonctionnelle est préférée.

81
Vijay Mathew

Essaye ça:

>>> Zip(*[[1,2], [3,4], [5,6]])
[(1, 3, 5), (2, 4, 6)]

Voir Déballage des listes d'arguments :

La situation inverse se produit lorsque les arguments sont déjà dans une liste ou un tuple mais doivent être décompressés pour un appel de fonction nécessitant des arguments positionnels distincts. Par exemple, la fonction range () intégrée attend des arguments de démarrage et d'arrêt séparés. S'ils ne sont pas disponibles séparément, écrivez l'appel de fonction avec l'opérateur * pour décompresser les arguments d'une liste ou d'un tuple:

>>> range(3, 6)             # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args)            # call with arguments unpacked from a list
[3, 4, 5]
129
Mark Byers