[英]Why doesn't the value of my boolean change in a while-loop?
我的算法書用不同的方法在 Python 上實現了一個鏈表。 這是remove
方法,但我不完全理解while
循環。
此實現依賴於Node
類先前定義的類有方法,如get.data()
get.next()
set_next()
等名單本身就是一種叫做類UnorderedList
。 self.head
指的是列表中的第一項。
這個remove
方法的想法是遍歷列表,直到找到我們想要刪除的項目。 我們創建一個current
和一個previous
來跟蹤我們正在查看的當前項目和之前的項目。
我的問題與 while 循環有關。 我們將found
設置為False
是為了在找到我們要查找的項目時更改它。 但是,當我們說not found
時,while 循環不會將found
的值更改為True
嗎?
我知道這是一個簡單的問題,但我很難理解這個 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())
所以似乎我錯過了 while 循環試圖做的事情的一部分。 事實上,說not found
意味着表達式的計算結果為True
,但在這種情況下,這不會停止循環。 它完全按照我們的意願去做,它繼續運行循環。 一旦我們找到了我們正在尋找的項目,我們將found
的值更改為True
。 在這一點上,當我們評估while not found
,它將產生False
,這將使我們退出循環。
not found
在 while 循環中用作條件,而不是用作更改值的語句。 您可以while not found
while found == False
閱讀為while found == False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.