Skip to main content
 首页 » 编程设计

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

2025年05月04日15haluo1

我正在检查一项作业,遇到了一些让我感到困惑的事情,因为我对 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。(正如它的读法,如果 (),x = 6)。

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

任何见解将不胜感激!

请您参考如下方法:

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

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

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

顺便说一句,不要用 list 等内置函数命名变量,否则您将无法轻松使用这些函数。

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

>>> 2 in [1,2] 
True 

这样做等同于问“‘蛋糕准备好了’是真的吗?”而不是“蛋糕准备好了吗?”。