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']
代码解释
- 元素的长度成为 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 函数来实现优化的内存利用率。