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 :

Problème avec les listes de suffixes


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Points : 80
    Points
    80
    Par défaut Problème avec les listes de suffixes
    Bonsoir,
    Voila j'ai une liste et je souhaite créer une liste de suffixe
    j'ai écris ce code mais ca ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    tab=['q','u','e','l','b','o','n','b','o','n','b','o','n']
    def suffixeClasser(tab):
        listeSuffixe= list()
        for i in range(len(tab)):
                del tab[i]
                listeSuffixe.append(tab[i])
        return listeSuffixe
    je souhaite avoir une liste qui contient :
    quelbonbonbon
    uelbonbonbon
    elbonbonbon
    lbonbonbon
    ...
    n

    Merci d'avance

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    pas besoin de del, on peut utiliser le slicing (tab[début:fin]), version courte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def suffixeClasser(tab):
       return [''.join(tab[i:]) for i in range(len(tab))]

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Points : 80
    Points
    80
    Par défaut
    Oui merci cela fonctionne bon maintenant je dois trier les suffixes et stocker l'indice lorsqu'il était classer ca veut pas marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def trieTab(tab):
        listeTrier=sorted(suffixesClasser(tab))
        return listeTrier
    def calculerSuffixes(tab):
        tabS =list()
        listeTrier=trieTab(tab)
        listeSuffixeClasser=suffixesClasser(tab)
        for i in range(len(listeTrier)):
            for j in range(len(listeSuffixeClasser)):
                if listeTrier[i]==listeSuffixeClasser[j]:
                    tabS.append(j)
        return tabS
    Si tu peux m'aider

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par dibax10 Voir le message
    maintenant je dois trier les suffixes et stocker l'indice lorsqu'il était classer
    En français votre phrase ne veut pas dire grand chose. Et si vous n'arrivez pas à exprimer en français ce que vous voulez, coder c'est pas la peine!

    ET si vous avez des difficultés à raconter les choses en français, partir de l'exemple d'une liste qui contient au départ.... et montrer ce que vous voudriez avoir à l'arrivée fonctionne aussi pour dire "ce qu'on veut".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Points : 80
    Points
    80
    Par défaut
    Oui je confirme ma phrase ne veut rien dire je n'ai pas fais attention.
    Bon pour être plus claire voila ce que je souhaites avoir
    Nom : IMG_20191123_205031.jpg
Affichages : 688
Taille : 1,22 Mo

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Avec Python on peut faire cela ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> s = 'quelbonbonbon'
    >>> liste = [''.join(s[i:]) for i in range(len(s))]
    >>> liste
    ['quelbonbonbon', 'uelbonbonbon', 'elbonbonbon', 'lbonbonbon', 'bonbonbon', 'onbonbon', 'nbonbon', 'bonbon', 'onbon', 'nbon', 'bon', 'on', 'n']
    puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from operator import itemgetter
    >>> sorted(enumerate(liste), key=itemgetter(1))
    [(10, 'bon'), (7, 'bonbon'), (4, 'bonbonbon'), (2, 'elbonbonbon'), (3, 'lbonbonbon'), (12, 'n'), (9, 'nbon'), (6, 'nbonbon'), (11, 'on'), (8, 'onbon'), (5, 'onbonbon'), (0, 'quelbonbonbon'), (1, 'uelbonbonbon')]
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Points : 80
    Points
    80
    Par défaut
    Merci ca fonctionne

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjoir
    Citation Envoyé par wiztricks Voir le message
    sorted(enumerate(liste), key=itemgetter(1))
    Est-on obligé d'utiliser itemgetter ? Est-ce mieux qu'une lambda (sorted(enumerate(liste), key=lambda x:x[1])) ?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Est-on obligé d'utiliser itemgetter ? Est-ce mieux qu'une lambda (sorted(enumerate(liste), key=lambda x:x[1])) ?
    Çà produit le même résultat, donc on peut toujours s'en passer.

    La différence sera éventuellement dans les questions qu'on pourrait poser à une revue de code...
    Si j'écris une fonction comme lambda x[1], il faudra éventuellement expliquer pourquoi et ce qu'elle fait alors qu'en écrivant itemgetter(1), c'est déjà documenté.

    C'est un peu comme le français, c'est une langue qui contient des mots "précis" qui permettront d'être concis dans la description de... Si on ne connaît pas ces mots là, c'est pas grave tant qu'on arrive à se faire entendre/comprendre avec plus de mots.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Merci de ta précision
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Bonjour,

    Est-on obligé d'utiliser itemgetter ? Est-ce mieux qu'une lambda (sorted(enumerate(liste), key=lambda x[1])) ?
    Obligé non... c'est rarement le cas, même quand on parle de PEP8, ça reste une convention, il ne faut pas l'oublier.

    Pylint n'aime pas trop les lambdas par exemple, et met des warnings pour prévenir qu'une autre solution à ce choix devrait être envisagé, mais encore une fois, c'est un conseil.

    La documentation de itemgetter comme l'annonce @wiztricks est un atout, mais itemgetter si tu fais une recherche est aussi un choix judicieux dès lors où la liste à trier devient importante niveau taille. Là encore, beaucoup d'écrits sur le net présenteront les temps d'exécution de chacune des possibilités en variant la taille de liste à trier. itemgetter gagne à tout les coups, mais dans le cas de figure actuel, je préfère voir itemgetter comme plus lisible que comme plus efficace.

    Voici un exemple sur github
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    mais itemgetter si tu fais une recherche est aussi un choix judicieux dès lors où la liste à trier devient importante niveau taille.
    Alors à ce propos, un point qui serait peut-être bon d'évoquer: dans Python (et évidemment les libs qui gravitent autour), il y a plein de choix judicieux MAIS le souci c'est de les connaitre. Et il y en a beaucoup beaucoup...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    il y a plein de choix judicieux MAIS le souci c'est de les connaitre. Et il y en a beaucoup beaucoup...
    Rien n'empêche de relire quelques chapitres de la documentation de temps en temps ou de regarder comment sont écrits les codes des autres (facile d'aller regarder le code d'une bibliothèque open source) ou des videos des conférences PyCon sur YouTube ou venir bavarder dans le forum.

    De toutes façons, en programmation l'important n'est pas de tout savoir (c'est impossible) mais d'apprendre à gérer/soigner son ignorance... pour arbitrer intelligemment, tiens je vais faire un sorted(... key=...) un lambda vite fait me permettra d'y passer le moins de temps possible (si je ne connais pas itemgetter) et d'avoir plus de temps pour travailler sur des problèmes plus ardus.
    Avec un peu plus de temps, on peut revoir le how-to sur le tri avec Python histoire d'en remettre une couche dans sa mémoire vive.
    Et puis coder c'est pas de la littérature écrite au fil de l'eau, c'est en général des itérations. Ce qui veut dire qu'on pourra peaufiner un truc fait à la va vite dans la version suivante (ou pas).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Alors à ce propos, un point qui serait peut-être bon d'évoquer: dans Python (et évidemment les libs qui gravitent autour), il y a plein de choix judicieux MAIS le souci c'est de les connaitre. Et il y en a beaucoup beaucoup...
    Ah mais c'est toute la beauté du langage je trouve... Il n'y qu'une vraie solution algorithmique, mais tellement de façons syntaxiques d'y arriver ! L'important est de voir les besoins (performance, gestion mémoire, ...) que tu as.

    L'essentiel c'est que ça fonctionne, mais si ton besoin va plus loin, alors tu vas chercher quelle sera la partie qui t'empêche d'arriver à cette performance, et en cherchant des solutions, tu vas tester. Souvent dans cette situation, existent des glues en C/C++ qui permettront de rendre le code plus efficace. Attention j'ai bien dis dans le cas où le choix algorithmique est le bon !

    Pour moi ce n'est pas un inconvénient, et pour d'autres ça en est autrement, les goûts et les couleurs... ça ne se discutent pas.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

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

Discussions similaires

  1. Problème avec les listes de valeurs
    Par yalla3 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/05/2007, 15h36
  2. [TP 7] Problème avec les listes chaînées (error 202)
    Par thelinekioubeur dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 06/12/2006, 23h15
  3. Problème avec les listes
    Par labatunga dans le forum Scheme
    Réponses: 4
    Dernier message: 26/11/2006, 21h09
  4. Problème avec les listes
    Par aliassaf dans le forum Général Python
    Réponses: 3
    Dernier message: 10/07/2006, 17h57

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