提问者:小点点

python-。pop()是否总是执行,即使在条件语句中也是如此?


如果我在条件语句内使用。pop(),那么即使条件不满足,pop仍然执行吗?

例如。

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

假设条件不满足且不返回False,那么[stack]的最后一个元素是否仍然弹出?


共3个答案

匿名用户

是,在条件评估期间弹出该项。 无论结果如何,项目都已弹出。 您可以通过在每种情况下打印堆栈来测试这一点。

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]) )

匿名用户

是的,它会爆炸,因为你叫它。 不管你在哪里称呼它,不管它是一个条件还是作为一个参数传递它,它都将完成它的任务“pop”。

如果您想安全地同时检查值和弹出,那么添加一个额外的行将不会造成伤害。

if something != stack[-1]:
    stack.pop()
    return False
else:
    return True

注意:我做这个例子时考虑到stack是一个列表,因为pop()将从列表中删除最后一项,所以我做了stack[-1]

匿名用户

在条件句中,您将与POP的结果进行比较。 所以需要执行pop,以便进行实际的比较。

像这样想

temp = stack.pop()
if 4 != temp: