Python 中的比較器

Vaibhhav Khetarpal 2023年10月10日
  1. 在 Python 中使用 cmp 引數和 sorted() 函式對陣列進行排序
  2. 在 Python 中使用 functools 庫對陣列進行排序
Python 中的比較器

比較器主要用於比較給定物件的兩個值。本教程討論了比較器以及如何使用比較器函式在 Python 中對陣列進行排序。

在 Python 中使用 cmp 引數和 sorted() 函式對陣列進行排序

此方法僅適用於 Python 2 版本,並在 Python 3 之後釋出的較新版本的 Python 中被移除。

早些時候,sorted() 方法有一個 cmp 引數,它利用比較器對給定的資料結構進行排序。

以下程式碼使用 cmp 引數和 sorted() 函式在 Python 2 中對陣列進行排序。

def compare(a, b):
    return a[0] - b[0]


data = [(8, None), (7, None), (5, None), (4, None)]
print(sorted(data, cmp=compare))

上面的程式碼提供了以下輸出:

[(4, None), (5, None), (7, None), (8, None)]

在 Python 中使用 functools 庫對陣列進行排序

雖然我們可以在 Python 2 中使用 Python 提供的 cmp() 函式,但在 Python 3 中的較新版本中不存在該函式。comparators 的使用在較新版本的 Python 中受到限制。

比較器 函式用於在 sorted() 函式的幫助下對給定的資料結構進行排序。在 Python 3 中,我們使用 key 函式來執行自定義排序過程。

在這裡,我們使用 functools 庫中的 functools.cmp_to_key() 函式來將新過時的 cmp 函式轉換為 key 函式。

下面的程式碼使用比較器函式對給定的資料結構進行排序。

from functools import cmp_to_key


def compare(a, b):
    return a[0] - b[0]


data = [(8, None), (7, None), (5, None), (4, None)]
print(sorted(data, key=cmp_to_key(compare)))

上面的程式碼提供了以下輸出:

[(4, None), (5, None), (7, None), (8, None)]
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn