是整数除法地板比
//
浮师/
在Python 3.2快?如果我知道我将要与整数唯一的工作,我应该有利于//
,而不是默认为/
的?截断师在Python 3.2我如何在Python 3.2整数截断行为?
1/2 = 0
-1/2 = 0
感谢。
是整数除法地板比//
浮师/
在Python 3.2快?如果我知道我将要与整数唯一的工作,我应该有利于//
,而不是默认为/
的?截断师在Python 3.2
我如何在Python 3.2整数截断行为?
1/2 = 0
-1/2 = 0
感谢。
from math import (floor, ceil)
def trunc_div(a, b):
c = a/b
return floor(c) if c > 0 else ceil(c)
测试,以确保它是正确的。现在已经很晚了,我在昏昏欲睡时做数学。
其实,不这样做。虽然看,如果我能继承INT做截断除法(不这样做,要么(也没用)),它发生,我认为int()
本身会截断实数,造成这样的:
def trunc_div(a, b):
return int(a/b)
这是一个相当愚蠢的包装。
所以,仅仅用浮法事业部,并与int()
截断它:
>>> int(1/2)
0
>>> int(-1/2)
0
这让你很接近你期望中缀符号。
这个故事的寓意是......不要让昏昏欲睡,而您的朋友的代码。
谢谢,我知道这样的事情会工作,只是想知道在Python中是否有这样的本地语言功能,所以我可以使用中缀运算符而不是函数。 – 2011-03-29 08:52:17
关于问题1 - ['timeit'](http://docs.python.org/py3k/library/timeit.html)确实不难使用。 – 2011-03-29 08:28:54
谢谢,我刚刚开始与Python,不知道有这样的功能。看起来像/比小小的weeny比//快。 – 2011-03-29 08:42:18
对于第一个问题,请参阅[这](http://stackoverflow.com/questions/1396564/why-is-subtraction-faster-than-addition-in-python)的启发性第一个答案,为什么这是不可能的很重要。具体来说:'原生加减操作码的速度是无关紧要的。它处于噪声层,与字节码评估完全相形见绌。这是在谈论一个或两个本地指令数千个.' – 2011-03-29 08:54:04