211 votes

Comment obtenir l'opposé (négation) d'un booléen en Python ?

Pour l'échantillon suivant :

def fuctionName(int, bool):
    if int in range(...):
        if bool == True:
            return False
        else:
            return True

Existe-t-il un moyen de sauter la deuxième déclaration if ? Juste pour dire à l'ordinateur de retourner l'opposé du booléen. bool ?

10 votes

C'est probablement juste du pseudo-code, mais int y bool sont tous deux des noms construits (pour les types qu'ils représentent), et ne doivent pas être utilisés comme noms de variables.

1 votes

Oui, c'est juste un pseudo-code, à des fins de démonstration seulement...

11 votes

if x == True: devrait être écrit if x: .

3voto

Sebastian Points 57

Vous pouvez simplement comparer le tableau booléen. Par exemple

X = [True, False, True]

entonces

Y = X == False

vous donnerait

Y = [False, True, False]

2 votes

Pour un tableau Numpy, peut-être, mais pour une liste Python standard, c'est incorrect. Comme le PO ne mentionne ni l'un ni l'autre, je ne vois pas en quoi cela répond à la question.

3voto

Amo Points 41

Je pense que la version la plus compacte est

self.foobar ^= True

Ce qui ne nécessite pas de répéter le nom entier et fonctionne avec des booléens purs.

2voto

user1767754 Points 460

Si vous essayez de mettre en œuvre un basculer pour que chaque fois que vous réexécutez un code persistant, celui-ci soit annulé, vous pouvez y parvenir comme suit :

try:
    toggle = not toggle
except NameError:
    toggle = True

L'exécution de ce code va d'abord définir le toggle a True et à chaque fois que ce snippet est appelé, toggle sera annulé.

0voto

Candide Points 11

Une autre façon d'obtenir le même résultat, que j'ai trouvée utile pour un dataframe pandas.

Comme suggéré ci-dessous par mousetail :

bool(1 - False)

bool(1 - True)

0 votes

N'y a-t-il pas d'inversion logique des dataframes pandas, comme avec les tableaux numpy ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X