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 :

Nombres d'occurences des valeurs dans un tableau


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut Nombres d'occurences des valeurs dans un tableau
    bonjour
    je vais vous exposer un exemple de résultat que je veux obtenir,s'il vous plait pouvez m'aider à l'atteindre.
    Données:
    liste0=['a','b','c','d']
    nb_occ=[1,1,2,2]
    Résultat:
    liste1=['a','b','c','c','d','d']
    j'essayé de faire le code en utilisant l'opération de multiplication terme à terme (*) mais j'ai cet erreur:
    TypeError: can't multiply sequence by non-int of type 'list'
    MERCI

  2. #2
    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
    Sers-toi d'enumerate.

    Edit :

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> liste = ['a', 'b', 'c', 'd']
    >>> occ = [1, 1, 2, 2]
    >>> nl = []
    >>> for cle, valeur in enumerate(liste) :
    ...     nl.extend([valeur] * occ[cle])
    ... 
    >>> nl
    ['a', 'b', 'c', 'c', 'd', 'd']
    Le temps ronge l'amour comme l'acide.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par bistouille Voir le message
    Sers-toi d'enumerate.

    Edit :

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> liste = ['a', 'b', 'c', 'd']
    >>> occ = [1, 1, 2, 2]
    >>> nl = []
    >>> for cle, valeur in enumerate(liste) :
    ...     nl.extend([valeur] * occ[cle])
    ... 
    >>> nl
    ['a', 'b', 'c', 'c', 'd', 'd']
    Merci beaucoup

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

    juste pour le principe on pouvait aussi envisager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    liste0 = ['a','b','c','d']
    nb_occ = [1,1,2,2]
    liste1 = list(''.join([i*j for i,j in zip(liste0, nb_occ)]))

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,

    juste pour le principe on pouvait aussi envisager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    liste0 = ['a','b','c','d']
    nb_occ = [1,1,2,2]
    liste1 = list(''.join([i*j for i,j in zip(liste0, nb_occ)]))
    Merci bien pour votre réponse
    vraiment,c'est un forum excellent
    merci encore fois pour tous qui veulent m'aider

  6. #6
    Membre expérimenté
    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
    Points : 1 384
    Points
    1 384
    Par défaut
    Ayant un faible pour la programmation fonctionnelle, j'ai tout de suite pensé à flatmap. Python ne possède pas de flatmap en standard, mais j'ai fait un peu de Scala dernièrement. Dans ce language, les for-comprehensions ne sont que du sucre syntaxique pour flatmap/map/filter. Comme en Scala, on peut donc aussi traduire un flatmap par une compréhension en Python, ce qui nous donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [e for c,n in zip(liste0, nb_occ) for e in c*n]
    EDIT: Quant à flatmap:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def flatmap(f, l, *args):
        return [x for arg in zip(l, *args) for x in f(*arg)]
     
    import operator
    flatmap(operator.mul, liste0, nb_occ)

Discussions similaires

  1. Compter nombre de répétitions des valeurs dans un tableau
    Par tabrouri2000 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 21/03/2021, 20h47
  2. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  3. calcul nombre d'occurences de valeurs dans un tableau
    Par solenne74 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/09/2012, 12h45
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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