【问题标题】:Index of a python3 for loop is behaving unusuallypython3 for 循环的索引行为异常
【发布时间】:2021-12-05 23:33:56
【问题描述】:

我正在尝试执行以下 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 是编译器。

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

【问题讨论】:

  • 这段代码在做什么?请不要让我们破译代码意图。
  • @Jab 我认为,这段代码在做什么与这里无关。

标签: python python-3.x for-loop stack


【解决方案1】:

我猜你正在交互式运行它。您看到的是 stack.pop() 的返回值与您的显式 print() 语句交错。

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

【讨论】:

  • 谢谢。你说的对。从文件中运行它可以解决问题。
【解决方案2】:

您的代码没问题。 我用 3.6.9 版本检查它

【讨论】:

  • 谢谢。我的问题是将它运行到交互模式。
【解决方案3】:

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

我的输出都是

0
1
2
3
4

【讨论】:

  • 我认为交互模式是问题所在。将代码保存到文件后运行可以解决问题。谢谢。
猜你喜欢
  • 2014-07-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 2022-01-19
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多