Signaler

Aplatir une liste de listes selon une condition [Résolu]

Posez votre question sara91h 2Messages postés jeudi 15 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - Dernière réponse le 17 juin 2017 à 01:56 par sara91h
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
Utile
+1
plus moins
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]
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+1
plus moins
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !