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 not e in l ou if e not in l ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut if not e in l ou if e not in l ?
    Bonjour,

    Question perte de temps:
    ou ?

    @+

  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
    me parait plus logique... car on peut l'écrire comme ça:

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    C'est bien ce que je pense aussi vis à vis de la comparaison booléenne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> l = (1, 2)
    >>> e = 1
    >>> type(e in l)
    <type 'bool'>
    Pour ce qui est de if not (e in l)...

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut
    [QUOTE=PauseKawa;6902021]C'est bien ce que je pense aussi vis à vis de la comparaison booléenne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> l = (1, 2)
    >>> e = 1
    >>> type(e in l)
    <type 'bool'>
    Bonjour PauseKawa,
    Il est normal de recevoir "type bool" à la question en ligne 3 puisque c'est "la comparaison" qui renvoie Vrai ou Faux selon le résultat. Si (1 est bien dans l, alors la condition est vraie).
    Un "Type (e)" renvoie un 'str', 'int', ... selon le formatage de la variable et de son contenu. Idem pour 'l'.

    A+

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Par défaut
    Pour l'interpréteur cela ne fait aucune différence mais pour le lecteur humain ça sonne plus mieux bien avec if element not in iterable.

    La première forme reste claire et correspond plus à ce qui peut se faire dans d'autres langages. À condition de bien comprendre l'ordre dans lequel Python va traduire l'instruction :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (not e) in ls: # erreur d'interprétation humaine possible
        # ...
    if not (e in ls): # interprétation humaine correct
        # ...

    Ce n'est que mon avis. Mais en même temps je ne sais toujours pas pourquoi 42, alors je vous laisse juger de ma crédulité...

  6. #6
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonjour,

    Question perte de temps:
    ou ?

    @+
    le me parait plus mathématiques , tandis que le me semble linguistique, il est parfait pour des littéraires qui se mettent à coder
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

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

    "not in" est un opérateur en tant que tel.
    Qu'on écrive "not z in L" où "z not in L": l’interpréteur générera les mêmes opcodes traduisant "z not in L".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def f1(z):
        if z not in L:
            pass
    génère les opcodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      4           0 LOAD_FAST                0 (z) 
                  3 LOAD_GLOBAL              0 (L) 
                  6 COMPARE_OP               7 (not in) 
                  9 POP_JUMP_IF_FALSE       15 
     
      5          12 JUMP_FORWARD             0 (to 15) 
            >>   15 LOAD_CONST               0 (None) 
                 18 RETURN_VALUE
    sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def f2(z):
        if not z in L:
            pass
    on obtient la même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      8           0 LOAD_FAST                0 (z) 
                  3 LOAD_GLOBAL              0 (L) 
                  6 COMPARE_OP               7 (not in) 
                  9 POP_JUMP_IF_FALSE       15 
     
      9          12 JUMP_FORWARD             0 (to 15) 
            >>   15 LOAD_CONST               0 (None) 
                 18 RETURN_VALUE
    C'est la même chose pour "not z is L" vs. "z is not L": "is not" est aussi un opcode.

    Ceci dit "not in" et "is not" existent dans l'espoir que les codes soient plus lisibles. Et je pense qu'il est plus lisible de... (dans la plupart des cas).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut Ouf ! Ça me rassure ;-)
    Bonjour wiztricks,

    Merci pour cette réponse "rassurante"

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    @wiztricks : J'avais hésité un moment avant de dire dans le sujet que le code est le même pour l’interpréteur au vu de dis au cas ou cela empêche une réponse.

    @ll : La question ne porte en effet pas sur le code lui même mais la présentation de celui ci. En fait une application d'import this / du pythonesque à la présentation du code.

    Pour ma part je pense que la forme if not <condition> et bien plus proche de l'esprit du langage.

    Dans l'attente d'autre avis je vais faire mon yoga

    @+

  10. #10
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Je me demande si Python n'as pas lui même donner la réponse...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                  6 COMPARE_OP               7 (not in)

Discussions similaires

  1. Treeview or not Treeview
    Par Hyedene dans le forum IHM
    Réponses: 3
    Dernier message: 04/04/2003, 15h56
  2. TXMLModule.create - name = resource not found
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 04/03/2003, 10h54
  3. [Turbo C++] Fonciton containing for are not expanded inline
    Par BuG dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 17/02/2003, 06h48
  4. Component not found
    Par Pm dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 14h40
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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