MEMOO
MEMOO
Published on 2025-04-18 / 3 Visits
0
0

Python列表排序(sort本地排序)

摘要:在本节中,你将学习如何使用 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) 可以反转默认的排序顺序。


Comment