Kri*_*odu -1 python boolean-logic operators python-3.x
今天我在这个Python程序中遇到了一个困难的情况:
a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是
a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)
这怎么可能?
让我们在x这里测试:
x = True in a in a
Run Code Online (Sandbox Code Playgroud)
True in [False, True]是True,又True in [False, True]是True。
所以x应该是True。但是当我运行程序时,它说False。
现在让我们从右到左:
x = True in a in a
Run Code Online (Sandbox Code Playgroud)
[False, True] in [False, True]is False,所以现在True in False可能是类型错误或其他一些错误。
你能解释一下吗?
Python 链接某些运算符,包括in.
这个:
True in a in [a]
Run Code Online (Sandbox Code Playgroud)
方法
(True in a) and (a in [a])
Run Code Online (Sandbox Code Playgroud)
所以如果a等于[False,True],则表达式为真。
其他版本:
True in a in a
True in a in (a)
Run Code Online (Sandbox Code Playgroud)
彼此等效。将括号放在周围(a)不会改变它的类型或它的值。
两者都意味着(True in a) and (a in a),所以除非a包含自身,否则它们是错误的。