Python 简明教程

Python - Sort Lists

Sorting Lists in Python

用 Python 对列表进行排序是一种按照既定条件(例如数字顺序或字典顺序)以升序或降序排列列表元素的方法。

这可以通过使用内置的 sorted() 函数或调用列表本身的 sort() 方法来实现,这两种方法都会修改原始列表或根据所用的方法返回一个新的已排序列表。

Sorting Lists Using sort() Method

python sort() method 用于就地对列表的元素进行排序。这意味着它会修改原始列表,并且不会返回一个新列表。

Syntax

使用 sort() 方法的语法如下 −

list_name.sort(key=None, reverse=False)

其中,

  1. list_name 是要排序的列表的名称。

  2. key (optional) 是定义排序条件的函数。如果提供,则将其应用于列表的每个元素进行排序。默认值为无。

  3. reverse (optional) 是一个布尔值。如果为 True,则列表将按降序排列。如果为 False(默认值),则列表将按升序排列。

Example of Sorting List in Lexicographical Order

在以下示例中,我们使用 sort() 函数对列表的项按字母数字顺序进行排序 -

list1 = ['physics', 'Biology', 'chemistry', 'maths']
print ("list before sort:", list1)
list1.sort()
print ("list after sort : ", list1)

它将生成如下输出:

list before sort: ['physics', 'Biology', 'chemistry', 'maths']
list after sort :  ['Biology', 'chemistry', 'maths', 'physics']

Example of Sorting List in Numerical Order

在此,我们使用 sort() 函数对给定的列表按数字顺序进行排序 -

list2 = [10,16, 9, 24, 5]
print ("list before sort", list2)
list2.sort()
print ("list after sort : ", list2)

下面显示了产生的输出:

list before sort [10, 16, 9, 24, 5]
list after sort :  [5, 9, 10, 16, 24]

Sorting Lists Using sorted() Method

Python 中的 sorted() 函数是一个用于对可迭代对象(如列表、元组或字符串)的元素进行排序的内置函数,并返回一个新的已排序列表,而不会改变原始的可迭代对象。

Syntax

sorted() 方法的语法如下 -

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

其中,

  1. iterable 是要对其元素进行排序的可迭代对象(例如列表、元组、字符串)。

  2. key (optional) 是一个定义排序标准的函数。如果提供该函数,则将其应用于可迭代对象的每个元素进行排序。默认值为 None。

  3. reverse (optional) 是一个布尔值。如果为 True,则将按降序对可迭代对象进行排序。如果为 False(默认值),则将按升序对可迭代对象进行排序。

Example

在以下示例中,我们使用 sorted() 函数对数字列表进行排序并检索一个新的已排序列表 -

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# Sorting in descending order
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)

以下是上面代码的输出: -

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

Sorting List Items with Callback Function

在 Python 中,回调函数是指作为另一个函数的参数传递给该函数,并在该函数中调用或执行的函数

我们可以使用 sorted() 函数或 Python 中的 sort() 函数,通过回调函数对列表项进行排序。这两个函数都允许我们使用“key”参数指定自定义排序标准,该参数接受回调函数。此回调函数定义了元素的比较和排序方式。

Example Using str.lower() as key Parameter

Python 中的 str.lower() 方法用于将字符串中的所有字符转换为小写。它返回一个新字符串,其中所有字母字符都转换为小写,同时保持非字母字符不变。

在此示例中,我们将 str.lower() 方法作为“key”参数传递给 sort() 函数 -

list1 = ['Physics', 'biology', 'Biomechanics', 'psychology']
print ("list before sort", list1)
list1.sort(key=str.lower)
print ("list after sort : ", list1)

它将生成以下 output

list before sort ['Physics', 'biology', 'Biomechanics', 'psychology']
list after sort : ['biology', 'Biomechanics', 'Physics', 'psychology']

Example Using user-defined Function as key Parameter

我们还可以使用用户定义的 function 作为 sort() 方法中的 key 参数。

在此示例中,myfunction() 使用 % 运算符来返回余数,基于余数执行排序 -

def myfunction(x):
   return x%10
list1 = [17, 23, 46, 51, 90]
print ("list before sort", list1)
list1.sort(key=myfunction)
print ("list after sort : ", list1)

它将生成如下输出:

list before sort [17, 23, 46, 51, 90]
list after sort: [90, 51, 23, 46, 17]