为什么它不存在?
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
我知道我可以做log(x,2),但是log2真的很常见,所以我有点困惑。
哦,看起来它只在C99中定义,而不是C90,我想这回答了我的问题。看起来还是有点傻。
发布于 2010-06-08 05:24:31
我想你已经回答了你自己的问题。:-)因为你可以做log(x, 2)
,所以没有log2(x)
。正如巨蟒的禅宗(PEP 20)所说,“应该有1个,最好只有一个--显而易见的方法。”
也就是说,Issue3366考虑了log2
(向下滚动到最后3条消息),它在Python2.7和3.2的math
模块中添加了其他几个C99数学函数。
编辑:log2在Issue11888中重新考虑,并在Python3.3中添加。
发布于 2014-03-12 23:51:52
我不确定有没有你想要的,但是:
--从数学的角度看,你可以做例如math.log(x)/math.log(2)。
--如果输入X是整型的,并且你在等待整型四舍五入的结果--你可以用右移位来更快地完成它。这适用于SHR命令,并且不使用Taylor级数+局部插值,后者隐藏在libc log()调用的幕后。
发布于 2021-02-28 05:06:39
对于任何晚到的人来说,Python3.3和更高版本都有math.log2。我猜它“通常比log(x,2),”或者log(x)/log(2)更准确。还有int.bit_length()。
https://stackoverflow.com/questions/2993214
复制相似问题