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 :

ignorer des éléments dans le parcours d'une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de yugure
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2016
    Messages : 38
    Par défaut ignorer des éléments dans le parcours d'une liste
    Bonjour,
    je voudrais savoir s'il y a moyen lors d'un parcours d'une liste d'ignorer des éléments répétitif ,c'est à dire que j'utilise la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for i in range(len(liste)):
    et je voudrais que par exemple si j'ai liste=[5,4,3,2,5,9]
    lorsque i parcourt la liste , il ignore le second 5 puisqu'il a déjà traité le premier 5 de la liste.
    Je vous remercie d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,
    utilise set(liste).

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    "set" supprime facilement les doublons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(list(set([5, 4, 3, 2, 5, 9])))
    [9, 2, 3, 4, 5]
    Mais comme on le voit, cela suppose que l'ordre des éléments n'a pas d'importance.

    Si on veut conserver l'ordre des éléments, voilà une solution possible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    L = [5, 4, 3, 2, 5, 9]
    L2 = [x for i, x in enumerate(L) if x not in L[:i]]
    print(L2)
    [5, 4, 3, 2, 9]

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    Citation Envoyé par tyrtamos Voir le message
    Si on veut conserver l'ordre des éléments, voilà une solution possible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    L = [5, 4, 3, 2, 5, 9]
    L2 = [x for i, x in enumerate(L) if x not in L[:i]]
    print(L2)
    [5, 4, 3, 2, 9]
    Pas mal...
    A la place d'un "set", on peut aussi utiliser un OrderedDict (qui est très proche):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> z = OrderedDict((k, None) for k in liste)
    >>> z
    OrderedDict([(5, None), (4, None), (3, None), (2, None), (9, None)])
    >>> for k in z:
    ...     print (k)
    ...
    5
    4
    3
    2
    9
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti Avatar de yugure
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2016
    Messages : 38
    Par défaut
    Merci pour vos réponses mais en fait mon code a pour but de calculer les fréquences d'apparition de nombres dans la liste ,
    mon idée était de stocker dans une variable le nombre de fois où je rencontre un nombre dans la liste ,
    et de créer une autre liste dans laquelle j'ai les fréquences d'apparition des nombres , et je ne veux pas que dans cette liste on y ait plusieurs fois la même fréquence pour un même nombre.
    exemple :
    liste=[1,2,3,4,9,5,2,5]
    je veux une liste en sortie de mon programme qui me donne l'apparition de chacun des nombres soit : [1,1,1,1,1,1,2]
    l'ordre n'a pas d'importance.
    Ainsi il est primordial que l'on ne compte pas deux fois le 5 lors du parcourt de la liste initiale ,pour éviter de se retrouver avec : [1,1,1,1,1,2,1,2].
    Y aurait-il alors un moyen pour lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for j in range(len(liste))
    lors du parcourt de j dans la liste il évite les nombres répétitifs de la liste ?
    Je vous remercie d'avance.

  6. #6
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Pour les fréquences tu as Counter de collections :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from collections import Counter
    >>> liste=[1,2,3,4,9,5,2,5]
    >>> Counter(liste)
    Counter({2: 2, 5: 2, 1: 1, 3: 1, 4: 1, 9: 1})

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

Discussions similaires

  1. Manipulation des items dans un tableau ou une liste
    Par Henley dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 03/05/2015, 17h50
  2. Afficher des éléments dans les formulaires d'une manière dynamique
    Par xZinou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/04/2013, 23h23
  3. Réponses: 4
    Dernier message: 14/01/2008, 00h15
  4. Supprimer des éléments dans une TreeView ?
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/09/2005, 12h20

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