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 :

liste qui renvoie l'énumeration de la liste ? [Python 3.X]


Sujet :

Python

  1. #21
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut
    Merci beaucoup

  2. #22
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ce qui s'écrit basiquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(len(L)):
        n = L[i]
        R[n] = R[n]+1
    reste à initialiser R avec "suffisamment" de 0.
    "suffisament" est le plus grand nombre M contenu dans L... plus 1.
    Donc R = [0] * (M+1).
    Effectivement c'est bien mieux comme ça... C'est une autre manière de faire...

    J'ai quand même voulu coder la manière expliquée par Sve@r (c'est-à-dire en utilisant une fonction qui compte combien de fois le nombre "n" se trouve dans une liste).

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def f1(lst):   
        res = [0] * (max(lst) + 1)
        for i in lst:
            res[i] = lst.count(i)
        return res

    C'est moins performant (dans certains cas on fait plusieurs fois le même calcul)...

  3. #23
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    C'est moins performant (dans certains cas on fait plusieurs fois le même calcul)...
    Il faudrait mémoriser dans un set les nombres déjà comptés.

    Ceci dit si le max est grand et que la liste est petite, on se retrouve avec un R plein de zéros. C'est pour çà qu'on va préférer utiliser un dictionnaire (pour ne compter que les nombres présents).

    Ce problème de comptage d’occurrences est tellement récurent que Python à collections.Counter.

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

  4. #24
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ceci dit si le max est grand et que la liste est petite, on se retrouve avec un R plein de zéros. C'est pour çà qu'on va préférer utiliser un dictionnaire (pour ne compter que les nombres présents).
    Oui justement c'est pour cela que j'avais dit (#5) que je trouvais cet exo bizarre... J'avais donné l'exemple d'une liste d'entiers naturels où il y a un grand nombre genre : [1,3, 6999999] il faudra renvoyé une liste de 7 millions d'éléments : [0,1,0,1,0,0,0,0,... ...,1]...

    Citation Envoyé par wiztricks Voir le message
    Ce problème de comptage d’occurrences est tellement récurent que Python à collections.Counter.
    Merci. Je vais regarder ça...

    Citation Envoyé par wiztricks Voir le message
    Il faudrait mémoriser dans un set les nombres déjà comptés
    Oui. Il y a un autre problème je suppose que la fonction count parcours à chaque fois toute la liste alors que dans le code que tu as proposé la liste n'est parcourue qu'une fois...

  5. #25
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    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 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Oui. Il y a un autre problème je suppose que la fonction count parcours à chaque fois toute la liste alors que dans le code que tu as proposé la liste n'est parcourue qu'une fois...
    Exact. C'est ce qu'on nomme une complexité en O(N²) parce qu'on considère qu''une liste de N éléments sera parcourue N fois. Et ça fait partie évidemment des complexités à essayer d'éviter.
    Toutefois j'aimais bien cette approche car ça lui apprenait à découper un problème complexe en petits problèmes simples. Enfin il apprendra plus tard (ou pas).
    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]

  6. #26
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Toutefois j'aimais bien cette approche car ça lui apprenait à découper un problème complexe en petits problèmes simples. Enfin il apprendra plus tard (ou pas).
    Certes mais çà demande de faire une double boucle (ou de masquer la boucle interne par un appel de fonction). Et c'est loin d'être intuitif, car on ne balaie pas un tableau...

    Bien sûr ce sont des constructions qu'il faut maîtriser parce qu'on n'a pas toujours le choix mais elles sont difficiles à piger lorsqu'on piétine déjà avec une boucle simple.

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

  7. #27
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/04/2011, 14h19
  2. Réponses: 4
    Dernier message: 29/07/2010, 10h53
  3. Réponses: 1
    Dernier message: 19/03/2008, 10h05
  4. Requête qui renvoie une liste de données
    Par fougna dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/08/2007, 12h05
  5. Fonction qui renvoie une liste
    Par la_praline dans le forum GTK+ avec C & C++
    Réponses: 20
    Dernier message: 20/04/2007, 21h22

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