【发布时间】:2020-08-31 05:25:12
【问题描述】:
给定以下伪代码(objArray(1) 表示已创建一个包含一个条目的数组)
class Stack:
def __init__(self):
self.data = objArray(1)
self.N = 0
def __resize(self,capacity):
copy = objArray(capacity)
for i in range(self.N):
copy[i] = self.data[i]
self.data = copy
我不明白这应该如何工作。让我们一步一步来:
首先,我们创建一个包含 1 个条目的数组。我们将 N 设置为 0。到目前为止一切顺利。
下一个函数使用参数初始化变量copy = objArray(capacity)。也清楚。
现在我开始感到困惑了。我们在构造函数中初始化了N = 0。所以我们的 range 函数的参数是 0,对吧?据我所知,在 python 中,range 函数将参数减 1。那么我们的 range 函数会变为 -1 吗?如果我明白这一点,也许 for 循环的作用对我来说可能会变得更清楚。
【问题讨论】:
-
也许您可以像这样进行自己的实验:
for i in range(0): print(i)。您将看到没有打印任何内容,因此在N = 0的情况下,循环变为nop。 -
您的问题仅仅是当 N 为 0 时会发生什么,还是更广泛地说,为什么存在循环? (它需要在 N 不为 0 时存在,如果堆栈多次调整大小可能会发生这种情况。)
标签: python arrays for-loop stack variable-assignment