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 :

exclusion d'une liste


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut exclusion d'une liste
    Bonjour à tous,

    Voila ma question:
    j'ai une liste avec différentes chaines de caractère, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['atif', 'btifa', 'ctif', 'etif', 'gtif']
    je veux supprimer les élements qui ne contiennent pas la lettre 'a'
    J'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for x in lst:
      if 'a'not in x:
        lst.remove(x)
    ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['atif', 'btifa', 'daf', 'gtif']
    Pourquoi gtif est toujours présent dans la liste?

    Merci!

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

    Le problème est que tu modifies lst qui est en même temps la référence de la boucle.

    La preuve:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for x in ['atif', 'btifa', 'ctif', 'etif', 'gtif']:
        print x, 'a' in x
        if 'a'not in x:
            lst.remove(x)
     
    print lst
    ['atif', 'btifa']
    Pour contourner, tu peux mettre l'indice dans la boucle (for i in range(0,len(lst)), et retirer les éléments avec pop(i).

    Autre solution plus courte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print [x for x in lst if 'a' in x]
    ['atif', 'btifa']
    PS: pour le code dans tes messages: utilise le '#'!

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut
    Clair , net et précis!!

    Merci beaucoup

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

Discussions similaires

  1. Exclusion d'une liste de valeurs
    Par christof1976 dans le forum Excel
    Réponses: 2
    Dernier message: 19/08/2013, 17h23
  2. Liste exclusive dans une table
    Par weebo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/02/2012, 12h14
  3. lectures dans une liste en exclusion d'une écriture
    Par j-jorge dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 17/03/2010, 21h39
  4. [MySQL] requête avec une contrainte d'exclusion portant sur une liste de valeurs
    Par vincounet dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/08/2008, 14h54
  5. requête d'exclusion d'une liste
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/02/2007, 15h20

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