Python内建函数cmp()用于比较两个对象的大小。如果两个对象相等,返回0;如果第一个对象小于第二个对象,返回负数;如果第一个对象大于第二个对象,返回正数。cmp()函数可以用于排序、查找、去重等操作。
一、用法示例
比较数字:
num1 = 10
num2 = 20
print(cmp(num1, num2)) # -1
print(cmp(num2, num1)) # 1
print(cmp(num1, num1)) # 0
比较字符串:
str1 = 'apple'
str2 = 'banana'
print(cmp(str1, str2)) # -1
print(cmp(str2, str1)) # 1
print(cmp(str1, str1)) # 0
比较列表:
list1 = [1, 2, 3]
list2 = [1, 2, 4]
print(cmp(list1, list2)) # -1
print(cmp(list2, list1)) # 1
print(cmp(list1, list1)) # 0
二、其他常见用法
1. 排序
可以利用cmp()函数进行排序。例如,要对一个数字列表进行升序排列:
num_list = [3, 1, 4, 2]
num_list.sort(cmp)
print(num_list) # [1, 2, 3, 4]
也可以自定义比较函数,例如按照绝对值大小进行排序:
def abs_cmp(a, b):
return cmp(abs(a), abs(b))
num_list = [-3, 1, 4, -2]
num_list.sort(abs_cmp)
print(num_list) # [1, -2, 3, 4]
2. 查找
可以利用cmp()函数进行查找,例如在一个有序列表中查找一个数字:
num_list = [1, 3, 5, 7, 9]
target_num = 5
for i, num in enumerate(num_list):
if cmp(num, target_num) == 0:
print('found at index', i)
break
需注意,此用法只适用于有序列表。如果列表无序,必须先对列表进行排序,再进行查找操作。
3. 去重
可以利用cmp()函数进行去重,例如从一个有重复元素的列表中去重:
num_list = [1, 2, 3, 1, 2, 4]
unique_list = []
for num in num_list:
if cmp(num, unique_list[-1] if unique_list else None) != 0:
unique_list.append(num)
print(unique_list) # [1, 2, 3, 4]
三、替代品
在Python3.x版本中已经移除了cmp()函数。如果需要进行比较操作,可以使用rich comparison operators,例如:
num1 = 10
num2 = 20
print(num1 < num2) # True
print(num1 > num2) # False
print(num1 == num2) # False
如果需要进行排序、查找、去重等操作,可以利用sorted()、index()、set()等函数实现。
四、总结
Python内建函数cmp()可用于比较两个对象的大小,应用广泛。在Python3.x版本中已经移除,可使用rich comparison operators、sorted()、index()、set()等函数替代。