不知道如何在python中使一行代码工作

时间:2017-10-06 03:17:19

标签: python arrays variables

我对编程非常陌生,我的教授给了我一些python代码,在第二行到最后一行有一个明显的错误,我不知道如何编写这段代码以便它不会出错?

我尝试过的事情:

import numpy as np
a = np.arange(10)

b = a[4:8]
print b

这返回[3 4 5 6 7],但显然这是错误的。在此之后,我不确定是否有任何其他方式来表达我的教授想要的东西?我已经让她澄清但没有任何帮助:/

这是原始代码

import numpy as np
a = np.arange(10)

b = a[a > 3 & a < 8]
print b

有什么想法吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

你缺少括号: b = a[(a > 3) & (a < 8)]应该有效。

答案 1 :(得分:0)

您需要了解Python中operator precedence的性质。 &的优先级高于><,因此原始表达式主要是评估:

b = a[a > (3 & a) < 8]

这显然不是你想要的。您想评估a > 3,然后评估a < 8,然后合并它们。此外,您所需的范围是3到7,包括:

b = a[(a >= 3) & (a < 8)]

另请注意,对于Numpy数组,其中一些运算符的行为与标准Python对象的行为略有不同。你需要玩这个来感受它,或阅读相关的文档。例如:

>>> a > 3
array([False, False, False, False,  True,  True,  True,  True,  True,  True], dtype=bool)

因此,这将评估数组中的每个项目是否为&gt; 3,并返回一个布尔值数组。