从理论上讲,hammar的答案和duffymo的答案是很好的猜测。但在实践中,我的机器上,这是 不是 更有效:
>>> import timeit>>> timeit.timeit(stmt='[n ** 0.5 for n in range(100)]', setup='import math', number=10000)0.15518403053283691>>> timeit.timeit(stmt='[math.sqrt(n) for n in range(100)]', setup='import math', number=10000)0.17707490921020508
问题的一部分是
.*** 作。如果
sqrt直接导入到名称空间中,则可以得到一些改进。
>>> timeit.timeit(stmt='[sqrt(n) for n in range(100)]', setup='from math import sqrt', number=10000)0.15312695503234863
那里的关键字: 轻微 。
进一步的测试表明,随着数量的增加,您从使用中获得的收益
sqrt也会增加。但是仍然不是很多!
>>> timeit.timeit(stmt='[n ** 0.5 for n in range(1000000)]', setup='import math', number=1)0.18888211250305176>>> timeit.timeit(stmt='[math.sqrt(n) for n in range(1000000)]', setup='import math', number=1)0.18425297737121582>>> timeit.timeit(stmt='[sqrt(n) for n in range(1000000)]', setup='from math import sqrt', number=1)0.1571958065032959
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)