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

Chi*_*ife 1 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()
Run Code Online (Sandbox Code Playgroud)

我相信输出将是两者,但输出只是第二个if语句.我知道在C中,如果你有类似的东西

if (x = 6)
Run Code Online (Sandbox Code Playgroud)

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

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

任何见解将不胜感激!

Tig*_*kT3 6

如您所见,是的,您的表达式需要显式分组:

>>> 2 in [1,2] == True
False
>>> (2 in [1,2]) == True
True
Run Code Online (Sandbox Code Playgroud)

请注意,正如@tavo和@MorganThrapp所提到的那样,没有括号的版本正在进行链式比较,检查2 in [1,2]并检查它[1,2] == True.后者是假的,所以完整的表达也是错误的.

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

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

>>> 2 in [1,2]
True
Run Code Online (Sandbox Code Playgroud)

这样做相当于问"蛋糕准备就绪"是一个真实的陈述吗?而不是"蛋糕准备好了吗?".

  • 你确定它只是关于操作优先级吗?因为`2 in([1,2] == True)`会抛出错误. (2认同)