python中的范围行为和numpy中的arange

Bal*_*alu 2 python numpy range

有人可以解释下面的'-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]
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 7

问题不是那么笨拙."问题"是python中的整数除法将结果与截断0(如C语言)相反 - 例如-9/2 ,解析为(-9)/2(或者(-9)//2如果您使用的是python3.x)求值为-5.int另一方面,内置函数会截断为零.换一种说法:

a = -9
b = 2
print a//b #-5
print int(float(a)/b) #-4
Run Code Online (Sandbox Code Playgroud)

如果你有兴趣.这是Guido讨论这个有趣(也许有点争议)的设计决定的博客文章.