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 :

Listes, compter le nombre d’occurrences de chaque élément distinct d'une liste.


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Listes, compter le nombre d’occurrences de chaque élément distinct d'une liste.
    bonjour , bonsoir.

    j'ai du mal à exprimer ce que je cherche à faire donc un exemple sera plus parlant:

    voici ma liste exemple: [5,8,5,9,5,4,7,8,9,6,5,3]
    mon but est de renvoyer la somme des (nombres d’occurrences -1) de chaque éléments apparaissant dans la liste
    ici ma liste possède 4 fois le nombre 5
    2 fois 8
    2 fois 9
    1 fois 4
    1 fois 7
    1 fois 6
    1 fois 5
    et 1 fois 3
    le résultat dois donc être (4-1)+(2-1)+(2-1)+(1-1)+...+(1-1)=5

    (j'ai besoins de cela pour comparer la résistance aux collisions de différentes fonctions de hachage dans le cadre d'un TIPE.
    j'avais commencer par simuler une attaque des anniversaires et voire le temps qu'il fallait pour trouver 2 empreintes identiques pour 2 mots distincts
    mais mon professeur ne semblait pas convaincu et préfère que je génère aléatoirement
    un nombre prédéfini de mots distincts et regarde le nombre de collisions obtenus. )
    je vous remercie de votre aide.

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    En principe, il faut montrer de la bonne volonté et montrer un code minimal.
    Cependant, voici une méthode basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import numpy as np
    ma_liste= [5,8,5,9,5,4,7,8,9,6,5,3]
    histo=np.zeros(10)
    for el in ma_liste:
        histo[el]=histo[el]+1
     
    somme = 0
    for el in histo:
        if el > 0:
            somme = somme + (el - 1)
    print(int(somme))
    Pas d'aide par mp.

  3. #3
    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,

    sinon collections.Counter() est fait pour ça aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> from collections import Counter
    >>> liste = [5, 8, 5, 9, 5, 4, 7, 8, 9, 6, 5, 3]
    >>> cpt = Counter(liste)
    >>> print ('\n'.join(['{} fois {}'.format(cpt[i],i) for i in cpt]))
    1 fois 3
    1 fois 4
    4 fois 5
    1 fois 6
    1 fois 7
    2 fois 8
    2 fois 9

  4. #4
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Autrement, avec un simple set.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print([(i, liste.count(i)) for i in set(liste)])
    Le temps ronge l'amour comme l'acide.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup à vous.

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/09/2019, 22h36
  2. Réponses: 4
    Dernier message: 10/03/2011, 09h06
  3. Compter éléments identiques d'une liste
    Par pioupiou67290 dans le forum Général Python
    Réponses: 13
    Dernier message: 10/04/2010, 16h45
  4. Réponses: 3
    Dernier message: 08/04/2009, 12h10
  5. Réponses: 1
    Dernier message: 22/10/2007, 14h02

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