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