python3 for 循环的索引表现异常

Index of a python3 for loop is behaving unusually

我正在尝试执行以下 Python 代码:

arr = [3, 4, 1, 6, 2]
n = len(arr)
res = [1] * n
stack = [-1]
#left
for i in range(n):
    print(i)
    while len(stack) > 1 and arr[stack[-1]] < arr[i]:
        stack.pop()
    res[i] += i - stack[-1] - 1
    stack.append(i)

虽然我没有在代码中更改 i 的值,但它打印如下:

0
1
0
2
3
2
1
4

知道为什么会这样吗? Python 3.6.9 是编译器。

编辑:添加截图作为参考。

我复制并粘贴了你的代码,它在 3.9 和 3.6 online editor 上对我来说都运行良好,但不确定你为什么会遇到问题。

我对两者的输出是

0
1
2
3
4

你的代码没问题。 我用 3.6.9

版本检查

我猜你是 运行 这种互动方式。您看到的是 stack.pop() 的 return 值与显式 print() 语句交错。

如果您分配(并忽略)pop 的 return 值,您将得到您期望的输出。