在Python中,确保int在两个整数之间并调整其值(如果有必要保持在该范围内)的最快方法是什么?

时间:2018-07-16 21:48:25

标签: python performance

在Python中,确保int在两个整数之间并在必要时调整其值以保持在该范围内的最快方法是什么?

到目前为止,我可以想到两种方法来确保x在0到100之间:

if x > 100:
    x = 100

if x < 0:
    x = 0

或者:

x = min(max(0, x), 100)

我想知道哪个更快,还有没有更快的方法?对于不同的x,我需要循环执行很多操作,通常x会在require范围内。

1 个答案:

答案 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语言中实现的,因此它们可能会更快,但不会。

更新:根据评论,我进行了以下更改:

  • 我将if.py中的第二个if更改为elif
  • 我将导入语句移到了设置中

新结果是:

('min_max', 3.0133590698242188)
('if', 2.3094170093536377)