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 :

if cellule in liste_point -> ? ? ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Par défaut if cellule in liste_point -> ? ? ?
    Bonjour,
    j'ai un petit problème de compréhenssion sur l'utilisation de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (Cell.Nom) in liste_point :
    pour vérifier l'existence d'une cellule dans une liste.
    je m'explique:

    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
    21
    22
     class Cellule():
        def __init__(self, Name, Coord, Altitude):
            self.Nom = Name
            self.x, self.y = Coord
            self.z = Altitude
     
     
    a = Cellule("110",(4,3),5)
    b = Cellule("111",(1,2),7)
    c = Cellule("112",(4,6),3)
    d = Cellule("113",(8,2),4)
     
     
    liste_point = [a,b,c,d]
     
     
    à présent, je désire verifier l'existence d'une cellule z.Nom qui s'appelle "111".
     
    if(z.Nom = "111") in liste_point :
        ......
    else
        ......
    Pour le moment, je n'arrive qu'à voir le contenu de else... Pourtant,la cellule z.Nom existe...
    Enfin, même si elle s'appelle "b" dans ma liste

    merci pour votre réponse.

    PS: Si quelqu'un peut également m'expliquer pourquoi je n'arrive pas à utiliser les Balises [code]...
    Moi, ça reste inopérant sur ma machine ^^ ça doit être une histoire d'autorisation... je ne sais pas.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    pour les balises tu dois avoir un addon qui bloquent les scripts ...
    par exemple, chez moi, sous firefox j'ai installé noscript, et je dois autoriser l'execution de scripts venant de developpez.net.

  3. #3
    Membre expérimenté Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Par défaut
    Bonjour,

    D'une quand tu ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(z.Nom = "111") in liste_point :
    ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if True in liste_point :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if None in liste_point :
    je sais plus et je peux pas tester là =/

    De plus, comme tout langage objet, la comparaison se fera via l'hashcode de l'objet,
    Il te faut donc surcharger la méthode __eq__ de ton objet.
    Réfère toi à la FAQ

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Par défaut
    Merci pour vos réponses.

    Je suis d'accord avec toi, "brachior", l'idée n'est pas de vérifier que Z.Nom = "111" est vrai. Il y certainement d'autres façons de faire plus efficace.

    Non, ce que je voudrais, c'est :
    à partir d'une cellule "z" qui porte le nom "111", je voudrais savoir s'il existe, dans ma liste "liste_point", une cellule qui porte déjà ce nom.
    En fait, je voudrais éviter de parcourir la liste élément par élément pour voir si une cellule porte déjà ce Nom.

    Et malheureusement pour moi, je ne sais pas comment l'écrire... Snif...

    PS: Désolé pour ma mise en page déplorable, je ne suis pas administrateur de la machine que j'utilise... Et donc, pas moyen de régler ce problème de addon qui bloquent les scripts

  5. #5
    Membre expérimenté Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Par défaut
    Si tu ne veux pas parcourir toute la liste,
    Il faut (à mon sens) soit utiliser un dictionnaire, soit surcharger __eq__

    Ton dictionnaire aurait pour clé le nombre,
    Le problème c'est que si ton problème ne se résume pas qu'à ce cas
    (par exemple ne pas créer de Cellule pour d'autre raison),
    Tu vas être vite bloqué ...

    La surcharge de la méthode __eq__ de ta classe peut donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def __eq__(self, c):
      // ici tu peux faire tous tes tests
      return self.Name == c.Name
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    liste_point = [a,b,c,d]
    z = Cellule("111",...)
    if z in liste_point:
     ...
    else:
     ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Par défaut
    Merci.
    En fait, je ne pense jamais à surcharger les opérateurs...
    Mais en fait, ça permet de simplifier et résoudre pas mal de chose.
    En tout cas , ça résout mon problème merci

    Et merci à toi aussi pacificator pour ta mise en page ^^

Discussions similaires

  1. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  2. [OLE Excel] Aller jusqu'à la dernière cellule rempli
    Par JBrek dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 07/08/2009, 19h21
  3. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18
  4. [] [Excel] Fusionner des cellules
    Par SamyD dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/12/2002, 18h37
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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