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) # False
print(num1 == num2) # False
如果需要進行排序、查找、去重等操作,可以利用sorted()、index()、set()等函數實現。
四、總結
Python內建函數cmp()可用於比較兩個對象的大小,應用廣泛。在Python3.x版本中已經移除,可使用rich comparison operators、sorted()、index()、set()等函數替代。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192289.html