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 :

Tri Liste Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut Tri Liste Python
    Bonjour tout le monde,
    Je cherche à trier une liste du type :

    Liste = [("A",4),("B",3),("C",2),("D",2),("E",2),("F",2),("G",1),("H",1),("D",1)]

    Cette liste represente, par exemple, le nombre d'occurence de chaque lettre dans un texte : si l'utilisateur tape occurence(texte,k) : la fonction retourne les K lettres les plus abondantes dans le texte, donc dans ma liste qui compte le nombre d'occurence de chaque lettre ( j'ai deja ecrit un fonction qui fait ca et qui en plus les trie par ordre croissant).

    donc, j'ai ecrit cette fonction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        occurence(texte,k):
        ListeTriee=[]
        ListeRetour=[]
        Liste=  [("A",4),("B",3),("J", 3) , ("C",2),("D",2),("E",2),("F",2),("G",1),("H",1),("D",1)]
        print Liste
        for i in range(len(Liste)):
            while i<range(len(Liste)):
                if Liste[i][1] != Liste[i+1][1] and j<k :
                    ListeRetour.append(Liste[i+1])
                    j=j+1
                elif Liste[i][1] == Liste[i+1][1]:
                    ListeRetour.append(Liste[i+1][1])
        return ListeRetour

    En fait, je voulais un resultat sous forme de liste, qui renvoi les k lettres les plus abondante, et que si plusieurs lettres ont la meme occurence, elles doivent etre inserée dans la liste jusqu'a ce que on est les K lettre les plus abondantes :

    Par exemple, ici, si l'utilisateur tape
    occurence('texte',3), on doit avoir [ "A","B","J"]

    Ma fonction ne marche pas ... Quelqu'un aurait il la gentillesse de m'aider ?
    Merci.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    J'ai un soucis de compréhension
    Si la liste de (lettre, occurence) est rangée par ordre "décroissant" - comme elle semble l'être - les N lettres les plus abondantes sont:
    - les k premières lettres
    - + les suivantes qui ont la même occurrence que la kième
    et des cas aux limites.

    Nous avons donc:

    Code python : 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
    def occurence(texte,k):
        strip_count = lambda li: [ c[0] for c in li ]
        if k >= len (texte):  # cas au limite
            return strip_count(texte)
        r = texte[:k]          # les k premiers
        last = r[-1:][0]       # l'occurence du dernier
     
        for e in texte[k:]:    # si l'occurrence du suivant est...
            if e[1] != last[1]: # differente, on sort
                break
            r.append(e)        # egale, on garde
        return strip_count(r)
     
     
     
    Liste=  [("A",4),("B",3),("J", 3) , ("C",2),("D",2),("E",2),("F",2),("G",1),("H",1),("D",1)]
    print occurence(Liste, 4)

    Et je suis sûr que certains vont trouver plus rapide, concis...
    Je me suis efforcé d'écrire le code en suivant la description 'francais'
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. fct tri liste chainée
    Par phenix1988 dans le forum C
    Réponses: 3
    Dernier message: 10/03/2008, 18h30
  2. Tri liste dans un dictionnaire
    Par MC wacko dans le forum Général Python
    Réponses: 5
    Dernier message: 21/01/2008, 14h20
  3. tri liste de pointeurs
    Par Margatthieu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 15/12/2007, 11h44
  4. Probleme tri liste Sharepoint
    Par oOoOuuhmAn dans le forum InfoPath
    Réponses: 1
    Dernier message: 12/09/2007, 09h42
  5. Que choisir pour une application de "gestion d'une todo liste" ? Python ou Java ?
    Par Yoshidu62 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 10/08/2007, 09h03

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