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
4 Réponses :
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]) )
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. p> Remarque: j'ai fait cet exemple en considérant Stack code> est une liste et comme
pop () code> supprimera le dernier élément de la liste afin que je ayé
pile [-1] p> p> < / p>
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 p> 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: p> Si vous en avez plus souvent besoin (ou pour rendre le code plus lisible), vous pouvez le mettre. dans une petite fonction: p>
Oui, la méthode POP () serait exécutée si la condition est satisfaite ou non. Comme une déclaration conditionnelle comme ci-dessous est un exemple que j'ai utilisé pour le vérifier. P> 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.
stack=[1,5,7,8,9]
something=9
if(something!=l1.pop()):
print(False)
else:
print(True)
print(l1)
renvoie quelque chose == Stack.pop () code> 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