有人可以解释下面的'-5'。 我对numpy有些新意,但这似乎很奇怪
In [112]: an_int=9
In [113]: an_int/2
Out[113]: 4
In [114]: range(-an_int/2,an_int/2)
Out[114]: [-5, -4, -3, -2, -1, 0, 1, 2, 3]
In [115]: arange(-an_int/2,an_int/2)
Out[115]: array([-5, -4, -3, -2, -1, 0, 1, 2, 3])
In [116]: range(-4,4)
Out[116]: [-4, -3, -2, -1, 0, 1, 2, 3]
答案 0 :(得分:7)
问题不是那么笨拙。 “问题”是python中的整数除法将结果与截断0相反(如C语言) - 例如-9/2
被解析为(-9)/2
(如果您使用的是python3.x,则为(-9)//2
)评估为-5
。另一方面,内置int
函数会截断为零。换句话说:
a = -9
b = 2
print a//b #-5
print int(float(a)/b) #-4
如果你有兴趣。这是Guido讨论这个有趣(也许有点争议)的设计决定的blog post。