IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

probleme de tri d'une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut probleme de tri d'une liste
    Bonjour,

    J'ai 2 listes de tailles identiques, la premiere contient mes elements :
    [[2,5],[3,7],[8,2]]
    et la deuxieme contient une valeur qui correspond à ces éléments :
    [3,4,2]

    J'aimerais donc trier la premiere liste en fonction des valeurs contenues dans la deuxieme liste.

    Je me suis penché du coté de sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # Essai pour voir ce qui s'affiche...
    def compare(self,x,y):
            print self.liste1.index(x)
            return 0
    que j'appelle donc par self.liste1.sort(self.compare)

    C'est juste un exemple, c'est pas ce que je mettrais bien sur dans ma fonction compare mais j'ai besoin de index mais ca ne fonctionne pas, j'ai une erreur "ValueError: list.index(x): x not in list"

    Bon je comprends très bien ce que signifie l'erreur mais le x est bien présent dans la liste.
    Par exemple, je fais afficher que le x dans la fonction compare, la ca fonctionne, c'est bien un élément de la liste.

    J'ai également essayé dans une console python sans rien d'autre avec une liste "bidon", on peut recherche un élément qui est une sous liste mais dans mon cas dans une classe je ne comprends pas pourquoi ca ne fonctionne pas... quelqu'un a une idée svp ?

    J'ai essayé aussi a la suite comme ca :
    self.liste1.index(self.liste1[2]) => me retourne bien 2...

    Qu'est-ce qui est mis exactement dans le x ? Je ne comprends pas pourquoi ca ne fonctionne pas...

    Merci
    Bonne soirée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut
    Vous essayez d'accéder à une liste en cours de tri : c'est impossible.
    Une solution consiste à copier liste1 (dans liste1b par exemple) et ensuite exécuter le tri.
    On a ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    liste2=[3,4,2]
    liste1=[[2,5],[3,7],[8,2]]
    liste1b=liste1[:]
    liste1.sort(cmp=lambda x,y : cmp(liste2[liste1b.index(x)],liste2[liste1b.index(y)]))
    et on obtient : liste1=[[8, 2], [2, 5], [3, 7]].

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    Ah d'accord merci.

    Et le lambda c'est en fait pour faire la fonction de comparaison directement dedans c'est ca ? Sans faire une nouvelle fonction a coté ?

    Merci
    ++

Discussions similaires

  1. [Requête] Tri via une liste déroulante
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/01/2006, 18h16
  2. Tri d'une liste d'objet CObList
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 13/07/2005, 13h50
  3. [TRI] tri d'une list provenant de LabelValueBean
    Par Canou dans le forum Struts 1
    Réponses: 6
    Dernier message: 20/09/2004, 14h55
  4. [LG]probleme d'ajout dans une liste chainée...
    Par misteryann dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2004, 20h28
  5. tri d'une liste
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2003, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo