摘要:在本节中,你将学习如何使用 Python 列表的 sort()
方法对列表进行排序。
Python 列表sort()
方法介绍
要对列表进行排序,可以使用 sort()
方法:
list.sort()
sort()
方法会就地排序(in place)原始列表。这意味着 sort()
方法会修改列表中元素的顺序。
默认情况下sort()
方法使用小于运算符 <
) 对列表中的元素进行排序。换句话说,它会将较小的元素放在较大的元素之前。
若要按从大到小的顺序排序,可以将 reverse=True
参数传递给 sort()
方法,如下所示:
list.sort(reverse=True)
字符串列表排序
如果列表包含字符串sort()
方法会按字母顺序对字符串元素进行排序。
以下示例使用 sort()
方法按字母顺序对 guests
列表中的元素进行排序:
guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer']
guests.sort()
print(guests)
输出:
['James', 'Jennifer', 'John', 'Mary', 'Patricia', 'Robert']
以下示例使用带有 reverse=True
参数的 sort()
方法,按逆字母顺序对 guests
列表中的元素进行排序:
guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer']
guests.sort(reverse=True)
print(guests)
输出:
['Robert', 'Patricia', 'Mary', 'John', 'Jennifer', 'James']
数字列表排序
如果列表包含数字sort()
方法会将数字从小到大排序。
以下示例使用 sort()
方法将 scores
列表中的数字从小到大排序:
scores = [5, 7, 4, 6, 9, 8]
scores.sort()
print(scores)
输出:
[4, 5, 6, 7, 8, 9]
要将数字从大到小排序,可以使用 sort(reverse=True)
,如下所示:
scores = [5, 7, 4, 6, 9, 8]
scores.sort(reverse=True)
print(scores)
输出:
[9, 8, 7, 6, 5, 4]
排序元组列表
假设你有一个元组列表,如下所示:
companies = [('Google', 2019, 134.81),
('Apple', 2019, 260.2),
('Facebook', 2019, 70.7)]
你希望按收入从高到低对 companies
列表进行排序。为此:
首先,指定一个排序键并将其传递给 sort()
方法。要定义排序键,可以创建一个接受元组并返回要按其排序的元素的函数:
def sort_key(company):
return company[2]
此 sort_key()
函数接受一个名为 company
的元组,并返回第三个元素。
请注意company
是一个元组,例如 ('Google', 2019, 134.81)
。而 company[2]
引用的是收入,例如此处的 134.81
。
其次,将 sort_key
函数传递给 sort()
方法:
companies.sort(key=sort_key, reverse=True)
sort()
方法将使用 sort_key()
函数返回的值进行比较。
请注意,只需将函数名称(不带括号)传递给 sort()
方法:
companies = [('Google', 2019, 134.81),
('Apple', 2019, 260.2),
('Facebook', 2019, 70.7)]
# 定义排序键
def sort_key(company):
return company[2]
# 按收入对公司进行排序
companies.sort(key=sort_key, reverse=True)
# 显示排序后的公司
print(companies)
输出:
[('Apple', 2019, 260.2), ('Google', 2019, 134.81), ('Facebook', 2019, 70.7)]
使用 lambda 表达式
为了更简洁,Python 允许你使用以下语法定义一个没有名称的函数:
lambda arguments: expression
没有名称的函数称为匿名函数。而这种语法称为 Lambda 表达式。
从技术上讲,它等同于以下函数:
def name(arguments):
return expression
以下示例使用 lambda 表达式按收入从低到高对公司进行排序:
companies = [('Google', 2019, 134.81),
('Apple', 2019, 260.2),
('Facebook', 2019, 70.7)]
# 按收入对公司进行排序
companies.sort(key=lambda company: company[2])
# 显示排序后的公司
print(companies)
输出:
[('Facebook', 2019, 70.7), ('Google', 2019, 134.81), ('Apple', 2019, 260.2)]
总结
使用 Python 的
List sort()
方法对列表进行就地排序。sort()
方法按字母顺序对字符串元素进行排序,并按从小到大的顺序对数字元素进行排序。使用
sort(reverse=True)
可以反转默认的排序顺序。