Python - cmp 関数のこと(Python3.0では削除されました)
Python の cmp 関数。
それがこれなんだけど。
def cmp(a, b):
return (a > b) - (a < b)
なるほどねぇ、っていう感じですよね。
私ならこう書いちゃいますよね。
def cmp(a, b):
if (a > b):
return 1
if (a < b):
return -1
return 0
それを if 文なしで書くんだ。
if 文って、処理時間かかるので、避ける人もいるよね。
ループで何回も cmp を呼び出しちゃうと、実行時間も変わってくるのかもしれない。
(a > b) も (b > a) も bool 型。
(a > b) - (b > a) は int 型。
bool を演算して int 型に変えている。
True が 1 で
False が 0 でないと成り立たないけど。
True が 1 でなかったり、False が 0 でなかったりするような、そんなひねくれた言語はないか。
ちなみに、Python3.0 では、この関数は削除されています。
「__lt__」と「__eq__」で十分でしょう、というような考え方のようです。