Python中用于比较对象的cmp()函数介绍
发布时间:2023-12-27 20:03:26
在Python 2中,可以使用cmp()函数来比较两个对象的大小。cmp()函数根据比较结果返回一个整数值,该值满足以下条件:
- 如果 个对象小于第二个对象,则返回一个负数。
- 如果两个对象相等,则返回0。
- 如果 个对象大于第二个对象,则返回一个正数。
而在Python 3中,cmp()函数已经被移除了,取而代之的是通过运算符进行比较。然而,在某些特定情况下,我们仍然会使用到cmp()函数。
下面是一些使用cmp()函数进行对象比较的例子:
1. 比较数字类型对象
a = 10 b = 20 print(cmp(a, b)) # 输出-1,因为a小于b print(cmp(b, a)) # 输出1,因为b大于a print(cmp(a, a)) # 输出0,因为a等于a
2. 比较字符串类型对象
str1 = 'hello' str2 = 'world' print(cmp(str1, str2)) # 输出-1,因为'hello'小于'world' print(cmp(str2, str1)) # 输出1,因为'world'大于'hello' print(cmp(str1, str1)) # 输出0,因为'hello'等于'hello'
3. 比较列表类型对象
list1 = [1, 2, 3] list2 = [4, 5, 6] print(cmp(list1, list2)) # 输出-1,因为[1, 2, 3]小于[4, 5, 6] print(cmp(list2, list1)) # 输出1,因为[4, 5, 6]大于[1, 2, 3] print(cmp(list1, list1)) # 输出0,因为[1, 2, 3]等于[1, 2, 3]
4. 比较自定义对象
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
point1 = Point(1, 2)
point2 = Point(3, 4)
# 自定义cmp()函数来比较两点之间的距离
def cmp_points(p1, p2):
dist1 = (p1.x ** 2 + p1.y ** 2) ** 0.5
dist2 = (p2.x ** 2 + p2.y ** 2) ** 0.5
if dist1 < dist2:
return -1
elif dist1 == dist2:
return 0
else:
return 1
print(cmp(point1, point2)) # 输出-1,因为point1的距离小于point2
print(cmp(point2, point1)) # 输出1,因为point2的距离大于point1
print(cmp(point1, point1)) # 输出0,因为point1的距离等于point1
需要注意的是,上述的例子是基于Python 2的cmp()函数。在Python 3中,我们可以使用运算符进行比较,例如通过重载对象的__lt__、__eq__和__gt__方法来实现比较大小。同时,Python还提供了一些内置函数,例如max()和min(),可以用来比较对象的大小。
