Aplatir une liste de listes selon une condition

Résolu
sara91h Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
sara91h Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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 13 Date d'inscription   Statut Membre Dernière intervention   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 13 Date d'inscription   Statut Membre Dernière intervention   5
 
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin
1
sara91h Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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