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

第一个解决方案是要走的路,记住它pythonic to bools like ints

另请注意,Python 2 有一个cmp执行此操作的函数:

>>> cmp(5, 7)
-1

但是在 Python 3cmp中已经消失了,因为它通常用于例如比较。list.sort现在正在使用key函数而不是cmp.

于 2013-05-16T06:00:27.097 回答