在Python中,确保int在两个整数之间并在必要时调整其值以保持在该范围内的最快方法是什么?
到目前为止,我可以想到两种方法来确保x在0到100之间:
if x > 100:
x = 100
if x < 0:
x = 0
或者:
x = min(max(0, x), 100)
我想知道哪个更快,还有没有更快的方法?对于不同的x,我需要循环执行很多操作,通常x会在require范围内。
答案 0 :(得分:-1)
为了分享到目前为止的工作,我创建了两个文件:
if.py
import timeit
s = """\
from random import randint
x = randint(-1, 102)
if x > 100:
x = 100
if x < 0:
x = 0
"""
print('if:', timeit.timeit(stmt=s))
min_max.py
import timeit
s = """\
from random import randint
x = randint(-1, 102)
x = min(max(0, x), 100)
"""
print('min_max:', timeit.timeit(stmt=s))
然后我跑了
python min_max.py; python if.py
结果通常是一致的:
min_max: 11.23165112733841
if: 9.973816215991974
我认为由于min / max是在C语言中实现的,因此它们可能会更快,但不会。
更新:根据评论,我进行了以下更改:
新结果是:
('min_max', 3.0133590698242188)
('if', 2.3094170093536377)