2
def compare(a, b):
    """
    Return 1 if a > b, 0 if a equals b, and -1 if a < b
    >>> compare (5, 7)
    1
    >>> compare (7, 7)
    0
    >>> compare (2, 3)
    -1
    """
4

1 に答える 1

12
>>> def compare(a, b):
        return (a > b) - (a < b)


>>> compare(5, 7)
-1
>>> compare(7, 7)
0
>>> compare(3, 2)
1

より長く、より冗長な方法は次のようになります。

def compare(a, b):
    return 1 if a > b else 0 if a == b else -1

平らにすると、次のようになります。

def compare(a, b):
    if a > b:
        return 1
    elif a == b:
        return 0
    else:
        return -1

最初の解決策は行くべき道です.sをsのように扱うのはpythonicであることを覚えておいください.boolint

cmpまた、Python 2 にはこれを行う関数があることに注意してください。

>>> cmp(5, 7)
-1

ただし、Python 3cmpでは、比較などに通常使用されるため、なくなりました。の代わりに関数list.sortを使用してダウンしています。keycmp

于 2013-05-16T06:00:27.097 に答える