2024-05-16 09:41:18 发布
网友
我在别人的密码里看到了这个:
y = img_index // num_images
其中,img_index是正在运行的索引,num_images是3。
img_index
num_images
当我在IPython中处理//时,它看起来就像一个除号(即一个正斜杠)。我只是想知道是否有任何理由有两个向前斜杠?
//
在Python 3中,他们让/运算符执行浮点除法,并添加//运算符执行整数除法(即不带余数的商);而在Python 2中,/运算符只是整数除法,除非其中一个操作数已经是浮点数。
/
在Python 2.X中:
>>> 10/3 3 >>> # to get a floating point number from integer division: >>> 10.0/3 3.3333333333333335 >>> float(10)/3 3.3333333333333335
在Python 3中:
>>> 10/3 3.3333333333333335 >>> 10//3 3
有关进一步的参考,请参见PEP238。
//是无条件的“地板部门”,例如:
>>> 4.0//1.5 2.0
如您所见,即使两个操作数都是floats,//仍然是^{层,所以您总是安全地知道它将做什么。
float
单个/可能会,也可能不会,这取决于Python的发布、将来的导入,甚至是Python运行的标志,例如:
$ python2.6 -Qold -c 'print 2/3' 0 $ python2.6 -Qnew -c 'print 2/3' 0.666666666667
如您所见,单个/可以是floor,或它可以返回一个float,基于完全非本地问题,直到并包括-Q标志的值…;-)。
-Q
所以,如果你知道你想要地板,总是使用//,这就保证了。如果您知道您不需要地板,请在其他操作数周围打一个float(),然后使用/。任何其他的组合,你都要受版本、导入和标志的支配!-)
float()
为了补充Alex的响应,我要补充的是,从Python 2.2.0a2开始,from __future__ import division是使用大量float(…)/…的一个方便的替代方法。所有除法都执行浮点除法,除了那些带//的除法。这适用于2.2.0a2版的所有版本。
from __future__ import division
float(…)/…
在Python 3中,他们让
/
运算符执行浮点除法,并添加//
运算符执行整数除法(即不带余数的商);而在Python 2中,/
运算符只是整数除法,除非其中一个操作数已经是浮点数。在Python 2.X中:
在Python 3中:
有关进一步的参考,请参见PEP238。
//
是无条件的“地板部门”,例如:如您所见,即使两个操作数都是
float
s,//
仍然是^{层,所以您总是安全地知道它将做什么。单个
/
可能会,也可能不会,这取决于Python的发布、将来的导入,甚至是Python运行的标志,例如:如您所见,单个
/
可以是floor,或它可以返回一个float,基于完全非本地问题,直到并包括-Q
标志的值…;-)。所以,如果你知道你想要地板,总是使用
//
,这就保证了。如果您知道您不需要地板,请在其他操作数周围打一个float()
,然后使用/
。任何其他的组合,你都要受版本、导入和标志的支配!-)为了补充Alex的响应,我要补充的是,从Python 2.2.0a2开始,
from __future__ import division
是使用大量float(…)/…
的一个方便的替代方法。所有除法都执行浮点除法,除了那些带//
的除法。这适用于2.2.0a2版的所有版本。相关问题 更多 >
编程相关推荐