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.
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]