Python - 列表排序



Python 中的列表排序

在 Python 中对列表进行排序是将列表的元素按照升序或降序排列的一种方法,排序依据可以是数字顺序或字典顺序等预定义标准。

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

使用 sort() 方法排序列表

Python 的 `sort() 方法` 用于就地排序列表的元素。这意味着它会修改原始列表,不会返回新的列表。

语法

使用 `sort()` 方法的语法如下:

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

其中:

  • list_name 是要排序的列表的名称。
  • key (可选) 是一个定义排序标准的函数。如果提供,则将其应用于列表的每个元素以进行排序。默认为 None。
  • reverse (可选) 是一个布尔值。如果为 True,则列表将按降序排序。如果为 False(默认值),则列表将按升序排序。

按字典顺序排序列表的示例

在下面的示例中,我们使用 `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']

按数字顺序排序列表的示例

在这里,我们使用 `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]

使用 sorted() 方法排序列表

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

语法

使用 `sorted()` 方法的语法如下:

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

其中:

  • iterable 是要排序的元素的可迭代对象(例如,列表、元组、字符串)。
  • key (可选) 是一个定义排序标准的函数。如果提供,则将其应用于可迭代对象的每个元素以进行排序。默认为 None。
  • reverse (可选) 是一个布尔值。如果为 True,则迭代器将按降序排序;如果为 False(默认),则迭代器将按升序排序。

示例

在下面的示例中,我们使用 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]

使用回调函数排序列表项

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

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

使用 str.lower() 作为 key 参数的示例

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

在这个例子中,我们将 str.lower() 方法作为参数传递给 sort() 函数中的“key”参数:

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

它将产生以下输出

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

使用用户定义函数作为 key 参数的示例

我们也可以使用用户定义的函数作为 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]
广告