2016-07-06 146 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