📜  Python – 按列表排序元组(1)

📅  最后修改于: 2023-12-03 15:04:12.731000             🧑  作者: Mango

Python – 按列表排序元组

如果你有一个包含元组的列表,你可以使用 Python 的内置函数 sorted() 来按列表排序元组。在排序时,可以指定按元组中的特定元素进行排序。这个方法可以用来对实际数据进行排序。

语法
sorted(iterable, key=None, reverse=False)

参数说明:

  • iterable:可迭代对象,如列表、元组、字典等。
  • key:用来排序的元素。可以是函数、类等等。如果指定了函数,则每个元素都会经过函数处理后再进行排序。
  • reverse:排序规则。reverse=true 表示降序,reverse=False 表示升序(默认)。
示例
对元组按其中某个元素进行排序
# 对元组的第一个元素进行升序排序
tuples = [(1, 'one'), (2, 'two'), (4, 'four'), (3, 'three')]
sorted_tuples = sorted(tuples, key=lambda x: x[0])
print(sorted_tuples)

# Output: [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
对元组按其中多个元素进行排序
# 对元组的第二个元素进行降序排序,如果第二个元素相同,则对第一个元素进行升序排序
tuples = [(1, 'one'), (3, 'three'), (2, 'two'), (3, 'four')]
sorted_tuples = sorted(tuples, key=lambda x: (-x[1], x[0]))
print(sorted_tuples)

# Output: [(3, 'three'), (3, 'four'), (2, 'two'), (1, 'one')]
对元组按其中一部分进行排序
# 对第二个元素的前两个字符进行升序排序
tuples = [(1, 'apple'), (3, 'peach'), (2, 'pear'), (3, 'orange')]
sorted_tuples = sorted(tuples, key=lambda x: x[1][:2])
print(sorted_tuples)

# Output: [(1, 'apple'), (3, 'orange'), (2, 'pear'), (3, 'peach')]
注意事项
  • 在使用 sorted() 函数时,原列表不会被修改,而是返回一个新的已排序的列表。
  • lambda 表达式用来创建匿名函数,可用于快速定义简单的函数。在排序时, key 参数通常使用 lambda 表达式来指定按哪个元素进行排序。
  • 如果需要对列表中的元组进行原地排序(即修改原列表),可以使用列表的 sort() 方法。与 sorted() 函数类似,sort() 方法也有 keyreverse 两个参数。