ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Python入门教程】第30篇 列表sort()方法

2022-01-22 18:02:00  阅读:181  来源: 互联网

标签:sort Python 30 companies 列表 2019 key 排序


本篇我们介绍如何使用列表的 sort() 方法对元素进行排序。

列表 sort() 方法

如果想要对列表中的元素进行排序,可以使用 sort() 方法:

list.sort()

sort() 方法执行的是原地(in place)排序,意味着它会改变列表中元素的位置。

默认情况下,sort() 方法使用小于运算符对列表元素进行排序。也就是说,更小的元素排在前面,更大的元素排在后面。

如果想要对列表元素进行从大到小排序,可以指定参数 reverse=True。例如:

list.sort(reverse=True)

列表排序示例

接下来我们看几个使用 sort() 方法排序的示例。

示例一:字符串列表排序

如果列表的元素为字符串,sort() 方法按照字母顺序进行排序。

以下示例使用 sort() 方法对列表 guests 中的元素进行排序:

guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer']
guests.sort()

print(guests)

输出结果如下:

['James', 'Jennifer', 'John', 'Mary', 'Patricia', 'Robert']

下面的示例使用 sort() 方法和 reverse=True 参数对列表 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)]

现在我们想要按照收入从高到低对这些公司进行排序。

首先,指定一个排序关键字并传递给 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_key 传递给 sort() 方法,函数名后面没有括号。

完整的代码如下:

companies = [('Google', 2019, 134.81),
             ('Apple', 2019, 260.2),
             ('Facebook', 2019, 70.7)]


# define a sort key
def sort_key(company):
    return company[2]



# sort the companies by revenue
companies.sort(key=sort_key, reverse=True)

# show the sorted companies
print(companies)

输出结果如下:

[('Apple', 2019, 260.2), ('Google', 2019, 134.81), ('Facebook', 2019, 70.7)]

使用 lambda 表达式

为了使代码更加精简, Python 允许定义没有名字的函数:

lambda arguments: expression

没有名字的函数被称为匿名函数,以上语句被称为 lambda 表达式

从技术上来说,lambda 表达式等价于以下函数:

def name(arguments):
    return expression

以下示例使用 lambda 表达式按照收入从低到高进行排序:

companies = [('Google', 2019, 134.81),
             ('Apple', 2019, 260.2),
             ('Facebook', 2019, 70.7)]

# sort the companies by revenue
companies.sort(key=lambda company: company[2])

# show the sorted companies
print(companies)

输出结果如下:

[('Facebook', 2019, 70.7), ('Google', 2019, 134.81), ('Apple', 2019, 260.2)]

总结

  • 列表的 sort() 方法用于原地排序。
  • sort() 方法对字符串使用字母顺序排序,对数字从小到大进行排序。
  • sort(reverse=True) 用于反向排序。

标签:sort,Python,30,companies,列表,2019,key,排序
来源: https://blog.csdn.net/horses/article/details/122324556

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有