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 :

[liste] référence unique dans une liste [Fait]


Sujet :

Python

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut [liste] référence unique dans une liste
    Hello,

    exist'il un moyen simple pour ajouter un élément à une liste et s'assurer que cet élément reste unique à la liste.

    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    L = [ 1, 2, 3, 4 ]
     
    L.append( 5 ) # OK
    L.append( 4 ) # pas bon, 4 existe déjà
    l'ajout d'une référence déjà existante ne doit pas générée d'erreur, elle ne doit simplement pas être ajoutée.

    le but est bien sûr d'éviter l'usage d'une boucle et d'un test comme dans l'exemple de ci-dessous qui illustre le fonctionnement, mais n'est pas la solution!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    Liste = [ 1,2,3 ]
     
    def Append( ID ):
     for I in Liste:
       if I == ID:
         return
     
     Liste.append( ID )
     
    print 'original = ' + str( Liste )
     
    Append( 4 )
    print '1er ajout = ' + str( Liste )
     
    Append( 4 )
    print '2ème ajout (pas de modif) = ' + str( Liste )
    pour résumer, existe t'il une fonction qui permet l'ajout d'un élément dans une liste uniquement si cet élément n'est pas déjà présent dans cette liste?

    merci de vos idées et suggestions.

  2. #2
    Membre averti
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Points : 342
    Points
    342
    Par défaut
    Tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    liste = [1, 3, 4, 5]
    if 2 in liste:
        print "2 existe déjà"
    else:
        liste.append(2)
    Je ne traite pas les problèmes techniques par MP...
    Les forums sont là pour ça...

    Les contributions du bipede

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Ou alors passe par les ensembles (Python 2.4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    >>> from sets import Set
    >>> a = [1,2,3,4]
    >>> b = Set(a)
    >>> b
    Set([1, 2, 3, 4])
    >>> b.add(5)
    >>> b
    Set([1, 2, 3, 4, 5])
    >>> b.add(4)
    >>> b
    Set([1, 2, 3, 4, 5])
    >>> a = list(b)
    >>> a
    [1, 2, 3, 4, 5]
    >>>

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    les 2 versions "in" et "set"

    je vais essayer les 2 solutions, merci

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

Discussions similaires

  1. [AC-2010] Utiliser valeur d'une liste de choix dans une liste déroulante d'un autre formulaire
    Par Sébastien1609 dans le forum Macros Access
    Réponses: 1
    Dernier message: 11/06/2015, 15h31
  2. Réponses: 9
    Dernier message: 21/05/2014, 20h21
  3. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 12h35
  4. Réponses: 0
    Dernier message: 09/11/2010, 15h43
  5. clé unique dans une liste sharepoint
    Par makinda dans le forum SharePoint
    Réponses: 1
    Dernier message: 14/05/2008, 08h35

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