我该如何编写比较函数?

时间:2013-05-16 05:54:49

标签: python python-2.7 doctest

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
    """

1 个答案:

答案 0 :(得分:11)

>>> 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

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

另请注意,Python 2具有cmp函数,可以执行此操作:

>>> cmp(5, 7)
-1

但是在Python 3中cmp已经消失了,因为比较它通常用于例如。 list.sort现在使用key函数代替cmp。{/ p>