我正在处理CodeFights上的一些计算机科学问题然后我发现了这个问题,起初我无法理解为什么第一种方法被认为是这种情境的最佳实现。
有人可以就如何衡量Python中的关系比较编码效率给我指导吗?
您想编写一个带整数x,y,L的函数 和R作为参数,如果xy位于区间(L,R),则返回True 否则就是假的。你正在考虑几种写作方法 此函数内的条件语句:
if L < x ** y <= R:
if x ** y > L and x ** y <= R:
if x ** y in range(L + 1, R + 1):
答案 0 :(得分:1)
对于小型基座的微基准测试,请查看the timeit
module。
为了记录,我强烈怀疑return L < x ** y <= R
将是最有效的解决方案;它只计算x ** y
一次,短路,并且不构造其他对象。它还直接使用测试结果,而不是使用控制显式if
或return True
的{{1}}检查。如果您必须选择,等效的return False
检查将是最快的; if
测试在理论上同样快,但构建range
对象,即使在Py 3中,也会有很高的固定成本,而收容测试无法弥补。