log2在Pythonmath模块

为什么不存在?

import math [x for x in dir(math) if 'log' in x] >>> ['log', 'log10', 'log1p'] 

我知道我可以做log(x,2),但是log2是很常见的,所以我有点困惑。

哦,它看起来只是在C99中定义的,而不是C90,我想这回答了我的问题。 还是有点傻。

我想你已经回答了你自己的问题。 :-)没有log2(x)因为你可以做log(x, 2) 。 正如“Python的禅宗”( PEP 20 )所说,“应该有一个 – 最好只有一个 – 明显的方法来做到这一点”。

也就是说,在Issue3366中考虑了log2 (向下滚动到最后3条消息),它为Python 2.7和3.2的math模块添加了几个其他的C99math函数。

编辑 :log2在issue11888重新考虑,并在Python 3.3中添加。

我不确定是否有你想要的,但是:

– 从math的angular度来看,你可以做exmaple math.log(x)/math.log(2)。

– 如果inputX具有整数types,并且您正在等待整数舍入结果 – 您可以使用右移来更快地完成。 这与SHR命令一起工作,并且没有泰勒系列+本地插值,这是在libc log()调用的底层。