Aplatir une liste de listes selon une condition

Résolu
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
A voir également:

3 réponses

Jean2808 Messages postés 14 Statut Membre 5
 
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]
1
Jean2808 Messages postés 14 Statut Membre 5
 
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin
1
sara91h Messages postés 2 Statut Membre
 
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
0