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 de tuples par le nième élément de tuples


Sujet :

Python

  1. #1
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut Trier une liste de tuples par le nième élément de tuples
    Soit une liste de tuples myList = [(1,2,67),(1,2,5),(1,2,1)]

    Y-a-t'il une méthode plus efficace pour trier cette liste (selon le 3ième élément des tuples par exemple) que:

    myList.sort(key=operator.itemgetter(2))


    ??

    Merci

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Bonsoir,

    en quête de l'optimisation du python?

    Je savais pas trop quoi repondre, j'ai testé trois fonctions, ta methode, la methode que j'utiliserais sans l'utilisation de operator et la fonction de tri classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import random
    import operator
    from timeit import Timer
     
    ITERATIONS = 100
     
    def f1(liste):
        liste.sort(key=operator.itemgetter(2))
        return liste
     
    def f2(liste):
        l = [(j[2], i) for i,j in enumerate(liste)]
        l.sort()
        r = [liste[item[1]] for item in l]
        return r
     
     
    def f3(liste):
        liste.sort()
        return liste
     
    if __name__ == '__main__':
        liste = []
        for i in range(5000):
            item = (1, 2,
    		random.randint(0, 5000))
            liste.append(item)
     
        t1 = Timer('f1(liste)', 'from __main__ import f1, liste')
        t2 = Timer('f2(liste)', 'from __main__ import f2, liste')
        t3 = Timer('f3(liste)', 'from __main__ import f3, liste')
        print "\tf1:", min(t1.repeat(3,ITERATIONS)), "s"
        print "\tf2:", min(t2.repeat(3,ITERATIONS)), "s"
        print "\tf3:", min(t3.repeat(3,ITERATIONS)), "s"
    J'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            f1: 0.160201507429 s
            f2: 0.503010642293 s
            f3: 0.0658277932257 s
    Si tes deux premiers elements sont differents, ce qui est probable, ta methode est la meilleure,
    voila, voila....

  3. #3
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Merci de ton avis!

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

Discussions similaires

  1. [AC-2007] Trier une liste de valeur par odre alphabétique
    Par Samy-DT dans le forum IHM
    Réponses: 3
    Dernier message: 06/05/2014, 01h11
  2. Réponses: 22
    Dernier message: 23/07/2010, 10h25
  3. Réponses: 5
    Dernier message: 03/01/2008, 16h07
  4. trier une liste par colonnes
    Par Sniper37 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 26/10/2007, 10h19
  5. trier une liste de répertoire par date de création
    Par airod dans le forum Général Python
    Réponses: 9
    Dernier message: 10/12/2006, 20h17

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