值<=最大值

duk*_*kem 1 python operations bit

我想知道,是否有可能实现类似的位操作:

if a > maximum: a = maximum
Run Code Online (Sandbox Code Playgroud)

"最大值"可以是随机数吗?

在我当前的代码中有许多类似的行.当然可以使用:

def foo(a, max=512): return a if a<max else max
Run Code Online (Sandbox Code Playgroud)

只是好奇,如果有一个更优雅和有效的方式.

omz*_*omz 8

没有必要为此定义自己的函数,min并且max已经内置:

a = min(maximum, a)
Run Code Online (Sandbox Code Playgroud)

根据Raymond的回答,也可以使用位操作:

a = maximum ^ ((a ^ maximum) & -(a < maximum))
Run Code Online (Sandbox Code Playgroud)

但在绝大多数情况下,性能优势并不值得使代码很难理解.此外,这仅适用于整数,而该min函数可用于所有类似的类型.