Python 列表排序——如何在 Python 中对列表进行排序

您可能出于多种原因希望在 Python 应用程序中对列表进行排序。

在本文中,将向您展示如何根据您需要执行的操作以升序和降序对列表进行排序。

Python 中的列表是什么?

列表是 Python 中的一种数据类型,您可以在其中存储不同数据类型(包括嵌套列表)的多个值。

以下是列表示例:

num_list = [1, 2, 3, 4, 5]

string_list = ["banana", "orange", "apple"]

mixed_list = [1, "banana", "orange", [5, 6]]

如何在 Python 中对列表进行排序

您可以使用 sort() 方法在 Python 中对列表进行排序。

sort() 方法允许您对列表中的元素进行排序。语法如下:

list.sort(reverse=True|False, key=sort_function)

该方法接受两个可选参数:

  • reverse:如果为 True,则按相反顺序(降序)对列表进行排序;如果为 False(默认情况下),则按常规顺序(升序)对列表进行排序
  • key:用于描述排序方法的函数

默认情况下,您可以按升序对字符串和数字进行排序,而无需向此方法传递参数:

items = ["orange", "cashew", "banana"]

items.sort()
# ['banana', 'cashew', 'orange']

在上面的列表中,您可以看到排序后的列表首先是b(banana),然后是c(cashew),因为 c 在 b 之后,最后是 o(orange),按字母顺序排在后面。

请注意,此方法会修改原始数组。

对于降序,您可以传递 reverse 参数:

items = [6, 8, 10, 5, 7, 2]

items.sort(reverse=True)
# [10, 8, 7, 6, 5, 2]

通过将 True 传递给 reverse 参数,您会看到元素列表中的数字是反向排序的,即降序。

如何指定排序函数

如果您在字典列表上尝试这个方法会怎样?让我们来看看:

items = [{
    'name': 'John',
    'age': 40
}, {
    'name': 'Mike',
    'age': 45
}, {
    'name': 'Jane',
    'age': 33
}, {
    'name': 'Asa',
    'age': 42
}]

items.sort()

您将得到一个错误,因为字典是不可排序的。这里你可以使用 key 参数指定排序条件:

items = [
  {
  'name': 'John',
  'age': 40
  },
  {
    'name': 'Mike',
    'age': 45
  },
  {
    'name': 'Jane',
    'age': 33
  },
  {
    'name': 'Asa',
    'age': 42
  }
]

def sort_fn(dict):
  return dict['age']

items.sort(key=sort_fn)
# [
#   {'name': 'Jane', 'age': 33},
#   {'name': 'John', 'age': 40},
#   {'name': 'Asa', 'age': 42},
#   {'name': 'Mike', 'age': 45}
# ]

正如您在上面的代码块中注意到的那样,我们使用 sort_fn 函数指定排序决策应该基于每个字典中的 age 键。

如果 reverse 参数在这里传递为 True,则排序的字典将按降序排列。

下面是另一个使用排序函数的例子:

items = ["cow", "elephant", "duck"]

def sort_fn(value):
    return len(value)

items.sort(key=sort_fn, reverse=True)
# ['elephant', 'duck', 'cow']

在这个例子中,sort_fn 函数返回列表中值的长度,作为排序过程的标准。通过将 reverse 参数指定为 True 实现反转,你可以看到排序后的列表先有较长的字符串,然后是较短的字符串。

总结

在构建应用程序时,有许多对列表进行排序的场景。它可以基于 last_opened 键对文件列表排序,也可能是基于 price 键对产品进行排序。正如您所看到的,在实际应用程序中可以使用许多标准。

在本文中,我们已经了解了如何使用不同的方法对 Python 中的列表进行升序和降序排序。


 python

也可以看看