Aplatir une liste de listes selon une condition
Résolu
sara91h
Messages postés
2
Statut
Membre
-
sara91h Messages postés 2 Statut Membre -
sara91h Messages postés 2 Statut Membre -
Bonjour,
Je débute en Python et je n'arrive pas à réaliser l'opération suivante pour aplatir une liste des listes :
Exemple:
Si
L = [ [ [X1] , [1,2,3] ],
[ [X1] , [1,1,2] ],
[ [X1], [1,1,1] ],
[ [X2], [1,1,2] ],
[ [X2], [2,1,3] ],
[ [X3], [2,2,2] ] ]
J'aimerai avoir la résultat suivante :
L = [ [ [X1], [1,2,3], [1,1,2], [1,1,1] ],
[ [X2], [1,1,2], [2,1,3] ],
[ [X3], [2,2,2] ] ]
c'est à dire regrouper les élements de X1 ensemble, X2 ensemble, X3 aussi dans une même sous liste.
Je vous remercie par avance
Je débute en Python et je n'arrive pas à réaliser l'opération suivante pour aplatir une liste des listes :
Exemple:
Si
L = [ [ [X1] , [1,2,3] ],
[ [X1] , [1,1,2] ],
[ [X1], [1,1,1] ],
[ [X2], [1,1,2] ],
[ [X2], [2,1,3] ],
[ [X3], [2,2,2] ] ]
J'aimerai avoir la résultat suivante :
L = [ [ [X1], [1,2,3], [1,1,2], [1,1,1] ],
[ [X2], [1,1,2], [2,1,3] ],
[ [X3], [2,2,2] ] ]
c'est à dire regrouper les élements de X1 ensemble, X2 ensemble, X3 aussi dans une même sous liste.
Je vous remercie par avance
3 réponses
-
Bonjour, essaye :
# a ajuster en fonction des besoins liste_indices = [["X1"],["X2"],["X3"]] liste_indices_traites = [] liste_temp = [] liste_fin = [] for i in liste: if (i[0] in liste_indices) and (i[0] not in liste_indices_traites): liste_indices_traites.append(i[0]) liste_fin.append(liste_temp) liste_temp = [i[0],i[1]] else: liste_temp = liste_temp + [i[1]] liste_fin.append(liste_temp) del liste_fin[0] -
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin
-
Je vous remercie pour votre réponse.
En fait, mon essai était dans le même esprit sauf que la condition if était mal traité de tel façon que j'obtiens des répétions dans la liste résultante.
ça marche parfaitement , merci