0
votes

Python - Est-ce que .pop () exécute toujours, même dans les déclarations conditionnelles?

Si j'utilise .pop () dans une instruction conditionnelle, la pop est-elle toujours exécutée même si la condition n'est pas remplie?

EG P>

if something != stack.pop():
    return False
else:
    return True


2 commentaires

renvoie quelque chose == Stack.pop () ferait la même chose dans une seule ligne.


@Adrianw Ceci n'est pas pertinent car le code lui-même n'est qu'un exemple


4 Réponses :


1
votes

Oui, l'article est sauté lors de l'évaluation de la condition. Quel que soit le résultat, l'article a été sauté. Vous pouvez tester cela en imprimant la pile dans chaque cas.

def myfunc(stack):
    if 4 != stack.pop(): # Swap 4 to test
        print(stack) # [1, 2, 3]
        return False
    else:
        print(stack) # [1, 2, 3]
        return True


if __name__ == '__main__':
    print( myfunc([1, 2, 3, 4]) )


0 commentaires

0
votes

Oui, ça va faire sauter parce que vous l'avez appelé. Peu importe où vous appelez cela, qu'il s'agisse d'une condition ou de la transmettre comme un argument, cela fera son travail "pop".

Si vous voulez vérifier en toute sécurité la valeur et que pop en même temps, l'ajout d'une ligne supplémentaire ne nuira pas. xxx

Remarque: j'ai fait cet exemple en considérant Stack est une liste et comme pop () supprimera le dernier élément de la liste afin que je ayé pile [-1] < / p>


0 commentaires

0
votes

Dans votre conditionnel, vous comparez au résultat de la pop. Donc, la pop doit être effectuée, afin de comparer quelque chose.

pense à ce que ceci xxx

Si vous souhaitez vérifier s'il y a un élément spécifique dans le Pile, et seulement POP () Si tel est le cas, vous pouvez utiliser: xxx

Si vous en avez plus souvent besoin (ou pour rendre le code plus lisible), vous pouvez le mettre. dans une petite fonction: xxx


0 commentaires

0
votes

Oui, la méthode POP () serait exécutée si la condition est satisfaite ou non. Comme une déclaration conditionnelle comme si (quelque chose! = Stack.pop ()) code> est exécuté de droite à gauche. Donc, la déclaration POP sera exécutée en premier, puis toute comparaison sera effectuée.

ci-dessous est un exemple que j'ai utilisé pour le vérifier. P>

stack=[1,5,7,8,9]
something=9
if(something!=l1.pop()):
    print(False)
else:
    print(True)
    print(l1)


0 commentaires