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 :

Pb de suppression de liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut Pb de suppression de liste
    Bonjour,

    Je pensais que cette étape allais être facile, je galère :
    J'ai une liste "gens" avec des listes a l'intérieur j'ai indiqué n'importe quoi dedans pour mes tests :
    renvoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[1, '01', 'dfsdfd', 'fsdf', '', 'Non'], [1, '01', 'encore 1', 'fghfg', '', 'Non'], [2, '02', 'le 2', '222', '', 'Non'], [1, '01', 'sdfds', 'sd', '', 'Non']]
    Je voudrais recrée cette liste voire une autre liste en retirant celles qui commencent par 1 soit :
    [1, '01', 'dfsdfd', 'fsdf', '', 'Non']
    [1, '01', 'encore 1', 'fghfg', '', 'Non']
    [1, '01', 'sdfds', 'sd', '', 'Non']


    Il ne doit donc rester que celle-ci :
    [2, '02', 'le 2', '222', '', 'Non']

    J'ai fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        print(gens)
        for e in enumerate(gens):
            if e[1][0] == 1:
                print("a sup")
                gens.remove[1]
            else:
                print("non")
        print(gens)
    Ca me renvoi ce msg d'erreur :
    TypeError: 'builtin_function_or_method' object is not subscriptable


    Il n'a donc rien retiré pourtant si je retire :
    cela distingue bien ("A sup" ou "non") celles qu'il faut retirer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [[1, '01', 'dfsdfd', 'fsdf', '', 'Non'], [1, '01', 'encore 1', 'fghfg', '', 'Non'], [2, '02', 'le 2', '222', '', 'Non'], [1, '01', 'sdfds', 'sd', '', 'Non']]
    a sup
    a sup
    non
    a sup
    [[1, '01', 'dfsdfd', 'fsdf', '', 'Non'], [1, '01', 'encore 1', 'fghfg', '', 'Non'], [2, '02', 'le 2', '222', '', 'Non'], [1, '01', 'sdfds', 'sd', '', 'Non']]

    Je comprends pas comment faire.

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Ah oui !

    Ce code est dans une fonction que j'appelle via un menu tkinter

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour

    la fonction remove supprime de la liste la valeur indiquée en paramètre
    Or ta variable gens est une liste de liste; elle ne contient pas la valeur 1
    D'ailleurs, tu veux supprimer toutes la liste et non juste une valeur

    PS, le enumerate me parait inutile ici

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Bonjour,

    Merci pour ta réponse, c'est justement mon problème, je ne sais pas comment supprimer ces 3 listes en ne gardant que la liste dont l'index est 2.
    En fait j'ai 6 listes (1,2,3,4,5 et 6) qui pointent sur cette unique liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gens = [[1, '01', 'dfsdfd', 'fsdf', '', 'Non'], [1, '01', 'encore 1', 'fghfg', '', 'Non'], [2, '02', 'le 2', '222', '', 'Non'], [1, '01', 'sdfds', 'sd', '', 'Non']]
    Mon problème est que je veut retirer les listes 1 si je choisi 1, la liste 2 si je choisi de supprimer celles dont l'index est 2 ect...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Tu n'es vraiment pas loin du but

    Pose toi la question de savoir ce que fais cette instruction
    Normalement j'y ai déjà répondu mais mes explications peuvent être insuffisante, je le conçois


    Puis demande toi comment récupérer tout la liste et non juste un élement. Ca devrait être simple
    Petit (Gros) indice : quel est le type de e[1] dans ton code ?

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    remove n'est pas la bonne fonction à utiliser.

    Et même si vous utilisiez la bonne, ca poserait encore des problèmes car vous effaceriez des éléments d'une liste sur laquelle vous etes en train d'itérer (donc vous la modifiez avant même que vous n'ayez fini de la parcourir).

    Sinon, plus simple est de construire une nouvelle liste qui ne contient que les éléments intéressants. Vous l'initialiser à liste vide. Vous parcourez la 1ere liste. Pour chaque gens vous regarder si le 1er élément est un 1. Si s'en est pas un, vous pouvez l'ajouter à la nouvelle liste. Et dans votre nouvelle liste vous aurez ce qu'il faut.

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

Discussions similaires

  1. [AC-2003] Suppression dans liste modifiable intersection ligne/colonne
    Par JPaul94300 dans le forum IHM
    Réponses: 1
    Dernier message: 16/06/2009, 17h02
  2. [MySQL] Requete suppression et liste déroulante
    Par nasbe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/06/2008, 14h52
  3. Suppression ligne List-Box par clavier
    Par mxh77 dans le forum 4D
    Réponses: 0
    Dernier message: 29/04/2008, 16h44
  4. [JaVaScRiPt]Suppression valeur liste déourante
    Par zybay dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/05/2007, 11h24
  5. Pb ajouter/suppression élément liste
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/09/2005, 15h54

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