为什么不存在?
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
Run Code Online (Sandbox Code Playgroud)
我知道我可以做log(x,2),但是log2很常见,所以我有点困惑.
哦,看起来它只在C99中定义,而不是C90,我猜这回答了我的问题.仍然看起来有点傻.
Dan*_*ach 51
我想你已经回答了自己的问题.:-)没有,log2(x)因为你可以做到log(x, 2).正如Python的禅宗(PEP 20)所说,"应该有一个 - 最好只有一个 - 明显的方式来做到这一点."
也就是说,log2在Issue3366中考虑(向下滚动到最后3条消息),它math为Python 2.7和3.2 的模块添加了几个其他C99数学函数.
编辑:log2在Issue11888中被重新考虑并在Python 3.3中添加.
我不确定你想要的是什么,但是:
- 从数学的角度来看,你可以做例如math.log(x)/math.log(2).
- 如果输入X具有整数类型并且您正在等待积分舍入结果 - 您可以通过右移来更快地完成.这适用于SHR命令,没有泰勒系列+局部插值,这是在libc log()调用的引擎下.