Python 列表 sort() 及示例

Python 中的 sort() 方法是什么?

Python 中的 sort() 方法有助于将列表按升序或降序排序。它可以用于对数字列表、元组和字符串列表进行排序。它不会创建单独的列表,而是修改或排序原始列表。

Python 中 Sort 方法的语法

sort 函数具有如下所示的语法:-

List.sort(key=…, reverse=…)

sort 函数有两个可选参数,即如下所示:-

  • Key(键):- 用于根据排序标准对函数进行排序。
  • Reverse(反转):- 它接受 true 或 false 值。如果为 true,此自定义函数将按降序对列表进行排序。

使用 Python 中的 Sort 方法按升序对列表进行排序

在 Python 中,sort 函数默认按升序对任何列表进行排序。升序列表的最小值在左侧,最大值在右侧。

示例

Python 代码

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

输出

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

代码解释

  • 上面的列表是随机定义的字符串列表。
  • Python 的 sort 函数有助于按升序对随机列表进行排序,单词长度最短的在左侧,长度最长的在右侧。

按降序对列表进行排序

sort 函数还允许列表按降序排序。它可以定义为列表从最大值开始,以最小值结束的顺序。

将 sort 函数的 reverse 参数设置为 true 以按降序对列表进行排序。

让我们看下面的例子:-

Python 代码

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

输出

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

注意:确保将“True”赋值给 reverse 参数时,首字母“T”大写,以避免任何运行时错误。

使用 Python 中的 Sort 方法对元组列表进行排序

Python 元组是不可变元素的集合,遵循有序序列。Python 的 sort 函数可用于使用自定义函数和 lambda 表达式对元组列表进行排序。

可以创建一个没有名称的自定义函数,并用 lambda 表达式表示。以下是 Lambda 表达式的语法:-

语法

Lambda arguments: expression

上述语法等同于下面的 Python 代码

def name (arguments):
return expression

这是一个元组和自定义函数的示例,说明了带有键参数的 sort 函数如何对元组中的元素进行排序:-

Python 代码

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

输出

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

代码解释

  • 将 reverse 参数定义为 true 以按降序对元组进行排序。
  • 自定义函数获取元组的第二个元素。
  • 这将用作 sort 函数的键。

让我们看下面使用 lambda 表达式的例子

Python 代码

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

输出

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

解释

  • lambda 表达式帮助您从高到低对元组的元素进行排序,以元组的第二个元素作为键。
  • 程序将检查元组第二个元素的最大值。

使用 Len 作为键参数对列表项进行排序

Len 是一个内置函数,用于确定项的长度。确定的长度可用于 sort 函数中的索引。为此,我们将 Len 分配给 Python sort 函数的 key 参数。

下面的 Python 代码说明了如何将 Len 函数与 sort 函数一起使用。

Python 代码

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

输出

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

代码解释

Sorting list items using Len

  • 元素的长度成为 key 参数的索引,以升序排列列表。
  • Len 函数估计基本列表中每个元素的长度。
  • 它将最短的元素放在左侧,最长的元素放在右侧。
  • 在这里,单词 alto 和 java 的长度为 4,它们首先在列表中排序,然后是 Guru99,长度为 6。

此示例说明了 sort 函数中的 reverse 参数的概念,如下所示:-

Python 代码

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

输出

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

使用用户定义的函数作为键参数对列表项进行排序

您还可以使用用户定义的函数作为键参数来排序列表。这是一个例子:-

Python 代码

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

输出

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

代码解释

  • 创建一个用户定义的函数以返回年份
  • key 参数将用户定义的函数作为标准。
  • Sort 函数将根据元素“year”的值按升序排列列表。

Python 中 sort 方法和 sorted 方法的区别

在总结区别之前,让我们先了解一下 Sorted 方法的语法。

Python 语法

sorted (list_name, reverse=…., key=..)

代码解释

  • sorted 函数将列表按升序或降序排序。
  • 该函数接受三个参数,其中两个是可选参数,一个参数是必需的。
  • 使用 Sorted 方法时,需要参数 list_name。
  • Sorted 方法可以接受任何类型的可迭代列表作为输入。
  • Key 参数和 reverse 参数是 Python 中 sorted 方法的可选参数。

下面是一个使用 Python 中的 sort 和 sorted 函数的示例:-

Python 代码

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

输出

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

代码解释

  • 原始列表作为必需参数传递给 sorted 函数。
  • Sorted 方法返回一个新列表,而不是原始列表。
  • 由于没有将附加参数传递给 sorted 方法,因此新列表默认按升序排序。
  • sort 函数不创建新列表。

以下是键的相似点和区别:-

Sorted 函数 Sort 函数
Sorted 函数是 Python 中的一个内置函数,它接受 list_name 作为必需参数。 Sort 函数不接受原始列表作为参数。
Sorted 方法返回一个新列表 Sort 函数不返回新列表
Sorted 函数应用于可迭代列表 sort 函数应用于不可迭代列表。
它不修改原始列表,并允许我们保留原始数据。 sort 函数修改原始函数,因此占用更少的内存空间

何时使用 sorted 方法或 sort 方法?

让我们看一个需要对比赛数据进行排序的例子。该程序使用 bib 号和秒为单位的完成时间。

Python 代码

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

输出

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

代码解释

  • 基本列表使用 sort 函数和 sorted 函数进行排序。
  • 应用 sort 函数后,基本列表丢失。
  • 不应将 sort 函数应用于原始数据集。当有原始数据集的副本时,应使用它。
  • Sorted 函数保留原始列表。它不会覆盖它。
  • 这提供了更好的可追溯性和有效的数据管理。

结论

  • sort 函数有助于对 Python 中的数字和字符串列表进行排序。
  • 它也有助于对元组进行排序。
  • Reverse 和 key 是函数的可选参数。
  • 如果需要拥有一个单独的列表同时保留原始列表,则必须使用 sorted 函数,否则,必须使用 sort 函数来实现优化的内存利用率。