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 :

supprimer des doublons d'une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut supprimer des doublons d'une liste
    Bonjour,

    Je voudrais supprimer des doublons dans une des sous-listes de la liste principales , mais ça ne marche pas !!
    Pourtant mon code a l'air correct !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        for blk in split_ff: # liste principale
            if len(blk) >= 6 : # condition d'existence de la sous-liste ciblee
               for i in xrange(len(blk[5])):
                   for j in reversed(xrange(i,len(blk[5]))):
                       if (blk[5][j] == blk[5][j-1]):
                           aki = blk[5].index(blk[5][j-1])
                           blk[5].pop(aki)
    Qu'en pensez vous??

    Merci
    M.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    A priori, c’est grave komplik.
    Ça le paraîtra peut être moins quand j’aurai compris la méthode.


    Est-ce que blk[5] est une liste ?


    On pourrait pas avoir une liste toute prête à être traitée, stp ?

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Une astuce pour éliminer les doublons:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    L=[1,1,2,3]
    Q=list(set(L))
    print Q
    A appliquer à votre sous-liste caractérisée par votre condition
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def cond(L):
        return len(L)>=6
    def clean(L):
        return list(set(L))
    E=[[1,1,2,3,4,5],[1,1,2]]
     
    print [clean(x) if cond(x) else x for x in E]
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    Bonjour,

    Une astuce pour éliminer les doublons:
    Code python :

    L=[1,1,2,3]
    Q=list(set(L))
    print Q
    J'ai déjà essayé cette méthode mais comme mes doublons sont des sous-listes, ça ne marche pas !!

    Est-ce que blk[5] est une liste ?
    En effet, en gros blk[5] est la liste qui contient mes sous listes avec doublons !!

    Je dois vérifier si blk[5] existe, si oui, on rentre dans blk[5] qui contient des sous listes (d'ou les boucles sur les blk[5][j] et on compare puis on supprime l'élément visé)

    M.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    Rebonjour,

    J'ai programme ce petit code, et pour le moment il réussit à faire ce que je veux !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def rm_doublons(liste): 
        for blk in liste:           
            if len(blk) >= 6 :# condition de presence de patch dans le block
               for a in blk[5]:
                   flag = 0
                   for b in blk[5]:
                       if (a == b ):
                          flag = flag +1
                          if flag > 1 :
                             aki = blk[5].index(b)
                             blk[5].pop(aki)
    Qu'en pensez vous??

  6. #6
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    Citation Envoyé par manaliac
    comme mes doublons sont des sous-listes, ça ne marche pas !!
    tu peux essayer en transformant tes sous-listes en tuple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try:
        blk[5] = [list(y) for y in set([tuple(x) for x in blk[5]])]
    except IndexError:
        pass

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

    Si le code vous plaît tant mieux car comme vous ne donnez aucune indication sur ce que sont le contenu des listes ni ce que le code est supposé faire dans les différents cas... Je ne vois pas trop comment nous pourrions vous aider.

    Votre histoire semble pour le moins embrouillée.
    Pourquoi ne pas faire un jeu de tests style: "lorsque l'entrée est XXXX, le résultat devrait être YYYY".
    C'est vous qui voyez.
    Bon courage.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Comment supprimer des "0" dans une liste
    Par solorac dans le forum Excel
    Réponses: 4
    Dernier message: 04/09/2007, 12h22
  2. [DOM] Ajouter/supprimer des entrées d'une liste déroulante
    Par Zakapatul dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/05/2007, 10h25
  3. Réponses: 10
    Dernier message: 19/09/2006, 03h15
  4. Supprimer des éléments d'une liste
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 15h08
  5. [Collections]Supprimer des doublons dans une ArrayList
    Par emie31 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/12/2005, 15h15

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