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 :

Récupérer index d'un tri (sort())


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Par défaut Récupérer index d'un tri (sort())
    Bonjour à tous,

    J'aimerais trier une liste et récupérer en même temps un "index" qui identifie la position des éléments dans la nouvelle liste triée à partir des positions de l'ancienne.

    Est-ce possible ? Comment dois-je m'y prendre ?

    Merci beaucoup

    Kevin

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Tu décores la liste avec ses indices, tu tries le résultat, puis tu extrais la liste triée et la liste des indices triés.
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Soit l la liste de départ
     
    ll = zip(l, xrange(len(l)))
    ll.sort()
    sorted_l = [x for (x,y) in ll]
    sorted_idx = [y for (x,y) in ll]
    Tu peux remplacer len(l) par une valeur dont on est certain qu'elle est >= len(l), par exemple sys.maxint

  3. #3
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> L = ['c', 'a', 'd', 'b', 'e']
    >>> L = enumerate(L)
    >>> L = sorted(L, key=operator.itemgetter(1))
    >>> L
    [(1, 'a'), (3, 'b'), (0, 'c'), (2, 'd'), (4, 'e')]
    >>> indexes = [e[0] for e in L]
    >>> elements = [e[1] for e in L]
    >>> indexes
    [1, 3, 0, 2, 4]
    >>> elements
    ['a', 'b', 'c', 'd', 'e']
    >>>

Discussions similaires

  1. Récupérer INDEX d'un getElementsByTagName
    Par MoKeS dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/05/2009, 09h30
  2. [WD12] + Récupérer l'ordre de tri d'une table
    Par samus535 dans le forum WinDev
    Réponses: 4
    Dernier message: 27/03/2009, 15h08
  3. [Info] Index avec colonnes triées DESC
    Par nuke_y dans le forum Oracle
    Réponses: 0
    Dernier message: 11/12/2007, 17h43
  4. [Visual C++ 6.0] Liste controle tri (sort)
    Par Mirna dans le forum MFC
    Réponses: 1
    Dernier message: 07/02/2007, 22h36
  5. Réponses: 2
    Dernier message: 25/10/2005, 10h51

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