Python 列表 sort() 示例
sort() 方法是什么 Python?
排序函数 Python 帮助将列表按升序或降序排序。它可用于对数字列表、元组和字符串列表进行排序。它不会创建单独的列表,而是修改或排序原始列表。
Sort 方法的语法 Python
排序函数的语法如下:-
List.sort(key=…, reverse=…)
sort 函数有两个可选参数,分别如下所列:–
- 键:- 用于根据排序标准对功能进行排序。
- Reverse: – 它的值为 true 或 false。如果为 true,此自定义函数将按降序对列表进行排序。
使用 Sort 方法按升序对列表进行排序 Python
In 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 函数的 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”分配给反向参数以大写“T”开头,以避免任何运行时错误。
使用 Sort 方法对元组列表进行排序 Python
Python 元组 是遵循有序序列的不可变元素的集合。 Python的排序函数可用于使用自定义函数和 lambda 表达式对元组列表进行排序。
可以创建一个没有名称的自定义函数,并用 lambda 表达式表示。以下是 Lambda 表达式的语法:–
语法:
Lambda arguments: expression
上述语法相当于下面的python代码:
def name (arguments): return expression
下面是一个元组和自定义函数的示例,用于说明具有关键参数的排序函数如何帮助对元组中的元素进行排序:-
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,以按降序对元组进行排序。
- 自定义函数取元组的第二个元素。
- 这被用作排序函数的键。
让我们看看下面使用 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 是一个内置函数,用于确定项目的长度。确定的长度可用于排序函数中的索引。为此,我们将 Len 分配给 Python 排序函数的关键参数。
下列 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']
代码说明:
- 元素的长度成为关键参数的索引,以便按升序排列列表。
- 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}]
代码说明:
- 创建用户定义函数来返回年份
- 关键参数以用户定义的函数作为准则。
- Sort 函数将根据元素“year”的值按升序排列列表。
sort 方法与 sorted 方法的区别 Python
在总结差异之前,让我们先了解一下 Sorted 方法的语法。
Python 语法:
sorted (list_name, reverse=…., key=..)
代码说明:
- 排序函数将列表按升序或降序排序。
- 该函数接受三个参数,其中两个参数是可选类型,一个参数是必需类型。
- 使用 Sorted 方法时需要参数 list_name。
- Sorted 方法可以将任何类型的可迭代列表作为输入。
- 关键参数和反向参数是sorted方法下的可选参数 Python.
以下是使用 sort 和 sorted 函数的示例 Python 如下所示:-
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 方法传递任何附加参数,因此新列表默认按升序排序。
- 排序函数不会生成任何新列表。
以下是主要的相同点和不同点:-
排序函数 | 排序功能 |
---|---|
排序函数 Python 是一个内置函数,以 list_name 作为必需参数。 | 排序函数不将原始列表作为参数。 |
排序方法返回一个新列表 | 排序函数不返回新列表 |
可迭代列表应使用排序函数 | 排序函数应用于不可迭代列表。 |
它不会修改原始列表并允许我们保留原始数据。 | sort函数修改了原函数,占用的内存空间更小 |
何时使用 sorted 方法或 sort 方法?
让我们举一个需要对比赛数据进行排序的例子。程序使用号码布和完成比赛所用的时间(以秒为单位)。
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 函数对基础列表进行排序。
- 应用排序函数时,基本列表会丢失。
- 排序函数不应用于原始数据集。它应该在有原始数据集的副本版本时使用。
- Sorted 函数保留原始列表。它不会覆盖它。
- 这提供了更好的可追溯性和有效的数据管理。
总结
- 排序函数有助于对 Python 中的数字和字符串列表进行排序。
- 它还可以帮助对元组进行排序。
- Reverse 和 key 是该函数的可选参数。
- 如果需要同时拥有单独列表和原始列表,则必须使用 sorted 函数,否则,必须使用 sort 函数来实现优化内存利用率。