为什么这个python if语句不等于true?

时间:2016-05-16 19:09:32

标签: python logic statements

我正在完成一项任务,并遇到了让我感到困惑的事情,因为我对python并不是很好。这是代码。

def main():


    list = [1,2]
    x = 2

    if (x in list == True):
       print("hi")

    if (x in list):
       print("Why does this proc?")

main()

我相信输出会是两者,但输出只是第二个if语句。我知道在C中,如果你有像

这样的东西
if (x = 6)

因为只有一个' =' x现在等于6.(正如其读数,if(),x = 6)。

这个python代码发生了类似的事情吗?是检查' list == true'首先,然后从那里检查x是否在列表中?

非常感谢任何见解!

1 个答案:

答案 0 :(得分:6)

如你所见,是的,你的表达需要明确的分组:

>>> 2 in [1,2] == True
False
>>> (2 in [1,2]) == True
True

请注意,正如@tavo和@MorganThrapp所述,没有括号的版本正在进行链式比较,检查2 in [1,2]然后检查[1,2] == True。后者是假的,所以完整的表达也是假的。

顺便说一句,在list之类的内置插件之后,不要为变量命名,否则您将无法轻松使用这些功能。

此外,您不必将表达式的结果与True进行比较:

>>> 2 in [1,2]
True

这样做相当于询问"蛋糕是否准备就绪'一个真实的陈述?"而#34;蛋糕准备好了吗?"。