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 :

trier une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut trier une liste
    bonjour

    avec python3 comment trier une liste de listes
    exemple :

    l=[[1,7],[2,78],[ 3,45]]

    comment obtenir [[1,7],[3,45],[2,78]] ?

    j'ai essayé:





    l=[[1,3 ],[2,8],[3,5]]
    print(l)

    def tri_selon_2(x,y):
    if x[1]<y[1]:
    return -1
    elif x[1]==y[1]:
    return 0
    else:
    return 1
    print(l.sort(tri_selon_2()))



    qui me renvoie:


    Traceback (most recent call last):
    File "C:\lycee\Python\Travail\testidiot.py", line 12, in <module>
    TypeError: tri_selon_2() missing 2 required positional arguments: 'x' and 'y'


    Merci

    Thorion

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    Salut,
    La méthode sort modifie la liste et ne retourne rien.
    La fonction sorted retourne la liste triée, l'originale étant inchangée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    l = [[1,7],[2,78],[ 3,45]]
     
    l2 = sorted(l,key=lambda x: x[1])
    print(l2)                           # [[1, 7], [3, 45], [2, 78]]
     
    l.sort(key=lambda x: x[1])          # sorting in place
    print(l)                            # [[1, 7], [3, 45], [2, 78]]

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 144
    Par défaut
    Il y a pas mal de wiki sympa sur ce sujet...

    Bonne continuation.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut merci
    tout est dans je titre
    (c'est la manière d'écrire la "clé" qui me posait surtout problème)

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 144
    Par défaut
    Dans ce cas, tout est dans le wiki que je t'ai mis en lien ci-dessus

    Voilà la même solution, mais en évitant lambda...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> from operator import itemgetter
    >>> l = [[1,7],[2,78],[ 3,45]]
    >>> l2 = sorted(l, key=itemgetter(1))
    >>> l2
    [[1, 7], [3, 45], [2, 78]]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut une suite
    En continuant à chercher à trier des listes ...
    si la liste est constituée d'objets sans relation d'ordre connue par Python on peut en créer une et y faire référence. Mais dans le wiki la "key" est supposée être une fonction d'une seule variable alors comment la définir por comparer deux objets ?

    Thorion

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier une liste chainée.
    Par gregb34 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 21/05/2006, 22h05
  2. Trier une liste de dossiers et de fichiers
    Par steveleg dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 16h54
  3. trier une list
    Par elekis dans le forum C++
    Réponses: 4
    Dernier message: 23/03/2006, 12h01
  4. [c#] Trier une liste de nombres liés.
    Par Joad dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/05/2005, 11h17
  5. [Debutant(e)]Trier une liste
    Par LeDébutantJava dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 19/08/2004, 12h44

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