115 votes

Comment compresser des listes dans une liste

Je veux compresser la liste suivante de listes:

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

Cela pourrait être réalisé avec la mise en œuvre actuelle zip uniquement si la liste est scindée en composants individuels:

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

Impossible de comprendre comment scinder la liste et transmettre les éléments individuels à zip . Une solution fonctionnelle est préférable.

188voto

Mark Byers Points 318575

Essayez ceci:

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

Voir Le 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 séparer les arguments de position. Par exemple, le built-in range() fonction attend séparé de démarrer et d'arrêter des arguments. Si elles ne sont pas disponibles séparément, écrire l'appel de la fonction avec l' *-opérateur pour décompresser les arguments à partir d'une liste ou 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]

Prograide.com

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.

Powered by:

X