Menu

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

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 

3 réponses

Meilleure réponse
Jean2808 13 Messages postés samedi 10 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 16 juin 2017 à 02:29
1
Merci
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]

Merci Jean2808 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22581 internautes ce mois-ci

Meilleure réponse
Jean2808 13 Messages postés samedi 10 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 16 juin 2017 à 08:07
1
Merci
Avec bien sûr le résultat (... ta liste applatie) dans liste_fin

Merci Jean2808 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22581 internautes ce mois-ci

sara91h 2 Messages postés jeudi 15 juin 2017Date d'inscription 17 juin 2017 Dernière intervention - 17 juin 2017 à 01:56
0
Merci
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