如何在 Python 中对元组进行排序

2025 年 3 月 4 日 | 阅读 6 分钟

在深入探讨如何在 Python 中排序元组之前,让我们先讨论一下什么是元组。

什么是元组?

元组是项的有序集合,在 Python 中也充当列表。但是,与列表不同,元组是不可变的,这意味着创建的元素不能被修改、添加或删除。元组由括号 '()' 定义,可以包含不同类型的数据,包括整数、浮点数、字符串甚至其他元组作为元素。

元组经常与相关数据结合使用。当您想要存储一个在程序过程中不应更改的有限序列时,通常会使用它们。此外,当不变性和性能特别重要时,元组通常被使用。

在 Python 中排序元组

使用 sort()

sort() 方法通常用于按升序排序列表的元素,默认情况下按第一个元素排序。我们可以通过首先将元组转换为列表,然后应用此函数来排序元组。此函数就地排序列表并返回 None。

输入

输出

('Itika', 'Arshia', 'Peter', 'Parker')
<class 'tuple'>

说明

  • 'sorted()' 函数用于按升序排序'tuple__' 中的元素。它输出一个具有已排序元素的新列表。
  • 我们获得了排序后的元组并打印了它。
  • 我们显示排序后元组的类型,而它本身将是一个数组。
  • 在 Python 中,'sort()' 函数就地排序列表,这意味着它在原始列表中进行修改,因此不返回任何内容。这就是为什么您的方法 'list(tuple_).sort()' 会导致元组未排序的原因。不同的是,'sorted()' 函数创建一个新列表(已排序),您可以在需要时使用它将列表转换为元组。

使用 sorted()

在 Python 中,使用 sorted() 内置函数来排序元组。应将元组作为参数传递给 sorted() 函数。函数返回的列表中,元组项按升序排序(默认)。我们可以使用元组将此列表数据类型转换为元组 ()。

sorted() 函数的 reverse 参数也可以指定排序顺序。升序是默认的排序顺序。当设置为 reverse=True 时,项按降序排序。我们还可以指定一个键函数,其返回值用于对项进行排序。我们取一个包含整数值的元组 tuple_,并在以下程序中按升序对其进行排序。

输入

输出

Sorted Tuple : (1, 2, 3, 5, 6, 7, 24)
<class 'tuple'>

说明

  • sorted(tuple_) 函数用于按升序排列 'tuple_' 的元素。结果是一个新的已排序列表。
  • 'Tuple()' 函数用于将有序列表转换为元组。
  • 我们打印已排序的元组,包括字符串和数字。
  • 我们打印元组的类型,这使得元组是元组这一点无可辩驳。

现在我们使用相同的函数按降序对元组进行排序。将 reverse=True 传递给 sorted() 函数以按降序排序元组。

输入

输出

Sorted Tuple : (24, 7, 6, 5, 3, 2, 1)
<class 'tuple'>

说明

  • 'sorted()' 函数通过附加 'reverse=True' 参数用于按降序排序元组的元素。返回一个新的已排序列表。
  • 已排序列表通过 `tuple()` 函数转换为元组。
  • 我们以排序顺序显示元组。
  • 我们使用打印语句来确认已形成排序类型的元组。

根据键函数排序元组

键是一个函数,它接受一个值并返回一个值。对于元组中的每个项,都会应用此键函数,并使用返回的值进行比较以对项进行排序。在以下程序中,我们根据字符串的长度对字符串元组进行排序。在这种情况下,我们可以使用 len() 内置函数作为键。

输入

输出

Sorted Tuple : ('sjs', 'abhd', 'sxshs', 'sbchcwsc')
<class 'tuple'>

说明

  • 使用 'sorted()' 函数对 Tuple_ 的元素进行排序是基于元素长度的。'key=len' 参数定义了排序是根据每个项目的长度进行的。
  • 'tuple()' 函数用于将排序后的列表转换为元组。
  • 我们打印已排序的单词列表。
  • 我们打印排序后元组的类型,并且此注释说明它是一个元组。

排序元组列表

使用 sorted()

让我们看看如何使用元组在 Python 中排序列表。考虑以下场景:我们希望对元组列表进行排序。我们必须根据给定的任何键对元组进行排序。这可以使用 sorted() 函数完成,该函数使用键对项进行排序并存储用于排序给定元组的键索引。此方法的 Python 执行如下

输入

输出

Sorted list of Tuples:
[(27, 11, 32), (24, 12, 32), (34, 21, 56), (42, 34, 42)]

说明

  • 'middle()' 函数接收元组 'n' 并返回其索引为 1 的中间元素。
  • 可以实现一个 'sort()' 函数,它以元组列表 'list_of_tuples' 作为输入,并使用 'sorted()' 函数的 'key = middle' 参数根据每个元组的中间元素对其进行排序。
  • 驱动代码设置一个列表 (list_),其中包含元组。
  • 元组列表的已排序列表由 'sort()' 函数生成。

使用冒泡排序

冒泡排序是一种用于对任何数量的元素列表进行排序的排序算法。如果给定列表中的相邻项顺序不正确,它会交换它们。然后,它重复此过程,直到所有元素都排序完毕。

在此示例中,我们将使用冒泡排序算法对元组列表进行排序。

输入

输出

[('Arshia', 26), ('Itika', 53), ('MJ', 45), ('Parker', 74), ('Peter', 82)]

说明

  • 外层循环一次遍历列表 'roll' 的每个元素。
  • 内层循环相应地迭代列表中的所有元素,除了前几轮迭代中已有效排序的 'k' 个元素。
  • 这是内层循环,'roll[l][first] > roll[l + 1][first]' 是条件。它用于检查索引 'l' 处的元组的第一个元素(名称)是否大于索引 'l + 1' 处的元组的第一个元素。
  • 如果条件为真,则交换元素的位置,以确保列表根据名称按升序排序。
  • 最后,列表 'roll' 以其正确的排序顺序打印。