有关Python if语句的问题

时间:2018-05-17 21:52:19

标签: python numpy if-statement

我正在使用Anaconda和Spyder运行Python 3.6.4。

有谁知道为什么会发生以下情况?

当我执行以下代码时,python打印“是”,这显然是错误的。

import numpy as np
a = 0
c = np.ones(150)
b = np.ones(10)
if a < len(c) & len(b) < 3:
    print('yes')

当我稍作修改时,条件不满意并且python不会打印任何内容

a = 0
c = np.ones(152)
b = np.ones(10)
if a < len(c) & len(b) < 3:
    print('yes')

此外,如果我改变“&amp;” “和”一切都按预期工作。

2 个答案:

答案 0 :(得分:2)

这是由于操作员链接,&优先。试试这个,注意括号:

if (a < len(c)) & (len(b) < 3):
    print('yes')

&是一个按位运算符,因此可用于组合两个布尔条件。在Python中,boolint的子类。

按位,len(c) & len(b)的计算结果为2,因此您实际上正在评估:

if 0 < 2 < 3:  # i.e. 0 < 2 and separately 2 < 3

答案 1 :(得分:0)

&是一个按位而且。 and是合乎逻辑的。 (使用它!它更干净,更pythonic)。

您还可以添加更多括号(a < len(c)) & (len(b) < 3):,这样可行,尽管很难看。