2016-07-06 170 views
1
class Solution: 
    def display(self,head): 
     current = head 
     while current: 
      print(current.data,end=' ') 
      current = current.next 

您好,我有一些困難,瞭解上述while循環,據我所知,你需要有一個while循環的條件,所以:Python的While循環語法

while (stuff) == True: 

但上面的代碼有:

while current: 

這是一樣的:

while current == head: 

感謝

+0

你似乎混淆while循環之上的語句的含義。它與循環無關,或者它是有條件的。相反,它將變量'head'複製到變量'current'。然後當前被轉換爲布爾值並檢查它是'真實的'[Mariusz Jamro](http://stackoverflow.com/users/342473/mariusz-jamro)的[answer](http://stackoverflow.com/ a/38230275/2465194)如下解釋。 – rtmh

回答

6

while current:語法字面意思是​​。該值將首先轉換爲bool,並與True進行比較。在python中,每個轉換爲bool的文件都是True,除非它是None,False,零或一個空集合。

查看truth value testing部分以供參考。

+0

謝謝,現在有意義 – MathsIsHard

0

你的循環可以被視爲

while current is not None: 

因爲解析器將嘗試解釋爲一個布爾值電流(和無,空單/元組/字典/字符串,0評價爲False)

+0

不,它更像'當電流不是無,電流不是假,電流不是[],電流不是{},電流不是0,電流不是「」:'。實際上,它是'while bool(current)== True:' – cat

+0

Python中有其他的falsy值比'None'更多,所以這是不正確的。 – cat

+0

我編輯了我的答案,使其更加完整......但是如果沒有下一個元素,current.next最有可能返回None。 此外,'while bool(current)'就足夠了,不需要檢查True是否相等 – Faibbus

0

變量current的值是條件。如果真的很糟糕,循環會繼續,如果它是虛假的,循環會停止。期望的是,在鏈表中的最後一個元素中,next將包含一個虛假值。我認爲值是None,在這種情況下,循環相當於:

while Current is not None: 

相反,如果鏈表使用false作爲結束標誌,它等同於:

while Current != false: 
+0

Python中還有其他的falsy值比None更多,所以這是不正確的。 – cat

+0

我說「我認爲這個值是無」,因爲這是實現這樣的一種典型方式。 – Barmar