我的算法书有一个用不同方法在 Python 上实现链表的方法。这是remove方法,但我不完全理解while循环。这个实现依赖于Node之前定义的一个类,该类具有 、 、 等方法。get.data()列表get.next()本身set_next()是一个名为 的类UnorderedList。self.head指列表中的第一项。此方法的思想remove是遍历列表,直到找到要删除的项目。我们创建 acurrent和 aprevious来跟踪我们正在查看的当前项目和之前的项目。我的问题与 while 循环有关。我们设置的found目的False是当我们找到我们正在寻找的项目时更改它。但是,当我们说 时,while 循环不会改变foundto的值吗?Truenot found我知道这是一个简单的问题,但我很难理解这个 while 循环为什么以及如何工作,因为在我的脑海中not通常使布尔值在其范围内与它的实际情况相反。有人可以向我解释一下吗?顺便说一句,我不需要对当前代码进行任何解释或改进,这是书中的一个示例,这对我来说都很有意义,我只是想理解那部分。def remove(self, item): current = self.head previous = None found = False while not found: if current.get_data() == item: found = True else: previous = current current = current.get_next() if previous == None: self.head = current.get_next() else: previous.set_next(current.get_next())
2 回答
LEATH
TA贡献1936条经验 获得超6个赞
所以看来我错过了 while 循环试图做的事情的一部分。事实上,saynot found
意味着表达式的计算结果为True
,但在这种情况下,这不会停止循环。它完全按照我们想要的方式执行,它继续运行循环。一旦找到我们正在寻找的项目,我们就将 的值更改found
为True
。那时,当我们评估它时,while not found
它将产生False
,这将使我们脱离循环。
猛跑小猪
TA贡献1858条经验 获得超8个赞
not found
用作 while 循环中的条件,而不是用作更改值的语句。您可以阅读while not found
为while found == False
添加回答
举报
0/150
提交
取消