Aplatir une liste de listes selon une condition

Résolu/Fermé
sara91h Messages postés 2 Date d'inscription jeudi 15 juin 2017 Statut Membre Dernière intervention 17 juin 2017 - Modifié le 15 juin 2017 à 12:18
sara91h Messages postés 2 Date d'inscription jeudi 15 juin 2017 Statut Membre Dernière intervention 17 juin 2017 - 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

3 réponses

Jean2808 Messages postés 13 Date d'inscription samedi 10 juin 2017 Statut Membre Dernière intervention 17 juin 2017 5
16 juin 2017 à 02:29
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 samedi 10 juin 2017 Statut Membre Dernière intervention 17 juin 2017 5
16 juin 2017 à 08:07
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin
1
sara91h Messages postés 2 Date d'inscription jeudi 15 juin 2017 Statut Membre Dernière intervention 17 juin 2017
17 juin 2017 à 01:56
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