見出し画像

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__」で十分でしょう、というような考え方のようです。

この記事が気に入ったらサポートをしてみませんか?