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

sara91h 2 Messages postés jeudi 15 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 15 juin 2017 à 12:17 - Dernière réponse : sara91h 2 Messages postés jeudi 15 juin 2017Date d'inscription 17 juin 2017 Dernière intervention
- 17 juin 2017 à 01:56
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
Afficher la suite 
2Messages postés jeudi 15 juin 2017Date d'inscription 17 juin 2017 Dernière intervention

3 réponses

Répondre au sujet
Jean2808 13 Messages postés samedi 10 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 16 juin 2017 à 02:29
+1
Utile
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é ?  
Commenter la réponse de Jean2808
Jean2808 13 Messages postés samedi 10 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 16 juin 2017 à 08:07
+1
Utile
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Jean2808
sara91h 2 Messages postés jeudi 15 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 17 juin 2017 à 01:56
0
Utile
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
Commenter la réponse de sara91h