Python 列表 cmp() 方法



Python 列表的cmp()方法比較兩個列表的元素。這些列表可以包含相同或不同資料型別的元素。如果元素型別相同,則此方法按字典順序比較它們並返回結果;但如果元素型別不同,則檢查比較的不同情況。如下所示 -

  • 如果元素是數字,則根據需要執行數值強制轉換並進行比較。
  • 如果任一元素是數字,則另一個元素被認為“更大”(數字“最小”)。
  • 否則,型別按名稱按字母順序排序。
  • 如果我們在到達一個列表的末尾之前到達了另一個列表的末尾,則較長的列表“更大”。

注意:此方法僅在 Python 2.x 中可執行,在 Python 3.x 中不起作用。

語法

以下是 Python 列表cmp()方法的語法 -

cmp(list1, list2)

引數

  • list1 - 這是要比較的第一個列表。

  • list2 - 這是要比較的第二個列表。

返回值

如果第一個列表大於第二個列表,則該方法返回 1,如果小於則返回 -1;當兩個列表相等時返回 0。

示例

以下示例顯示了 Python 列表 cmp() 方法的使用。此程式僅在 Python 2.x 版本中執行。

list1, list2 = [123, 'xyz'], [456, 'abc']
print cmp(list1, list2)
print cmp(list2, list1)
list3 = list2 + [786];
print cmp(list2, list3)

當我們執行上述程式時,它會產生以下結果 -

-1
1
-1

示例

如果使用者希望在 Python 3.x 直譯器中執行此方法,他們可以像給定示例中所示的那樣宣告一個使用者自定義函式。此方法的工作原理類似於內建的 cmp() 方法。

def cmp(x, y):
   return (x > y) - (x < y)
#x > y
x = 5
y = 3
print("The cmp value for x>y is : ",cmp(x, y),"\n")
#x<y
x = 7
y = 9
print("The cmp value for x<y is : ",cmp(x, y),"\n")
#x=y
x = 13
y = 13
print("The cmp value for x=y is : ",cmp(x, y))
#odd and even
k = 16
if cmp(0, k % 2):
   print("\n","The given number",k,"is odd number ")
else:
   print("\n","The given number",k,"is even number")
k= 31
if cmp(0, k % 2):
   print("\n","The given number",k,"is odd number")
else:
   print("\n","The given number",k,"is even number")

執行上述程式碼將得到以下結果:

The cmp value for x>y is : 1

The cmp value for x<y is : -1

The cmp value for x=y is : 0

The given number 16 is even number

The given number 31 is odd number
python_lists.htm
廣告