2012-04-29 48 views
1

不知,是有可能實現類似於用位操作:值<=最大

if a > maximum: a = maximum 

其中「最大」可以是一個隨機數?

在我目前的代碼中有許多相似的行。當然可以使用:

def foo(a, max=512): return a if a<max else max 

只是好奇,如果有一個更優雅和有效的方式。

+6

如何使用內置'min'功能? 'a = min(最大,a)',不是一點操作,而是更優雅和簡潔。 – omz

+0

@omz如果我是你,我會提出這個答案。 –

+0

按位操作不會導致更多的協調 –

回答

8

有沒有需要定義自己的功能,對於這一點,minmax已經內置:

a = min(maximum, a) 

按照Raymond's answer,還可以使用位操作:

a = maximum^((a^maximum) & -(a < maximum)) 

但在絕大多數情況下,性能優勢並沒有真正值得代碼很難理解。此外,這隻適用於整數,而min函數可用於所有可比較的類型。

+0

謝謝,這真的是最好的選擇。 –