数据排序,是使用 Python 进行工作时最普通的任务。例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进行排序。

本文描述了如何对 Python 中的列表进行排序。

一、Python sort() 和 sorted()

在 Python 中,你可以使用内建的 list.sort()方法和 sorted()函数对列表进行排序。

sorted()函数创建了一个新的排序列表,而内建的list.sort()方法直接进行排序。如果你想保存原来未排序的列表,使用 sorted()函数。另外一个不同点就是,sorted()对任何可迭代的对象有效果。

sort() 和 sorted() 语法如下:

list.sort(key=function, reverse=Boolean)

sorted(iterable, key=function, reverse=Boolean)

可选的关键词参数key和reverse有下面的意思:

key - 带有一个参数的函数,并且在对比之前先计算出来。这个函数必须返回一个值,用来做排序对比。

reverse - reverse值可能是True或者False。默认值是False。当参数被设置成 True,这个排序列表将会按照反序进行排序。

列表中的元素使用"小于"号进行比较,并且按照升序排列顺序。小于号不支持将字符串和整数进行对比,因此,如果你有一个列表包含字符串和整数,这个排序操作将会失败。

下面的例子显示如何以字母顺序对一个字符串列表进行排序:

directions = ["north", "east", "south", "west"]

directions.sort()

print('Sorted list:', directions)

输出:

Sorted list: ['east', 'north', 'south', 'west']

如果你想保持原来的列表不变,使用sorted()函数:

directions = ["north", "east", "south", "west"]

sorted_directions = sorted(directions)

print('Sorted list:', sorted_directions)

输出:

Sorted list: ['east', 'north', 'south', 'west']

想要把列表进行反向排序(降序),将reverse参数设置成True:

directions = ["north", "east", "south", "west"]

directions.sort(reverse=True)

print('Sorted list:', directions)

输出:

Sorted list: ['west', 'south', 'north', 'east']

二、使用函数进行排序

key参数接收一个函数作为参数,并且允许你执行更复杂的排序操作。

最简单的例子就是按照元素的长度来排序:

directions = ["Arya", "Daenerys", "Jon", "Brienne"]

directions.sort(key=len)

print('Sorted list:', directions)

我们正在使用len()函数返回字符串中字符的数目,并且将它作为对比因子。

Sorted list: ['Jon', 'Arya', 'Brienne', 'Daenerys']

你也可以创建一个自定义的函数,并且将它作为key参数来进行对比。下面是一个例子,显示如何根据数字各个位数上的数字之和,来进行排序:

def sum_digits(num):

digits = [int(x) for x in str(num)]

return sum(digits)

numbers = [23, 77, 19, 310, 219]

numbers.sort(reverse=True, key=sum_digits)

print('Sorted list:', numbers)

输出:

Sorted list: [77, 219, 19, 23, 310]

另外一个例子就是,使用key 参数来对一个复杂的列表进行排序,例如,对元祖列表进行排序:

numbers = [(3, 14), (1, 61), (2, 71)]

numbers.sort(key=lambda k: k[0])

print('Sorted list:', numbers)

我们正在使用一个匿名函数,返回元祖第一个元素。这个列表将会按照函数返回值来进行排序:

Sorted list: [(1, 61), (2, 71), (3, 14)]

同样的方法可以被用来对一个字典列表进行排序:

elements = [

{'name': 'Germanium', 'number': 25, 'symbol': 'ge'},

{'name': 'Silver', 'number': 47, 'symbol': 'ag'},

{'name': 'Iron', 'number': 26, 'symbol': 'fe'},

]

elements.sort(key=lambda k: k['name'])

print('Sorted list:', elements)

lambda 函数返回name值,并用来对比:

Sorted list: [

{'name': 'Germanium', 'number': 25, 'symbol': 'ge'},

{'name': 'Iron', 'number': 26, 'symbol': 'fe'},

{'name': 'Silver', 'number': 47, 'symbol': 'ag'}

]

还有一个更好,更快的方法就是使用操作符模块函数。

下面是一个例子:

from operator import itemgetter

elements = [

{'name': 'Germanium', 'number': 25, 'symbol': 'ge'},

{'name': 'Silver', 'number': 47, 'symbol': 'ag'},

{'name': 'Iron', 'number': 26, 'symbol': 'fe'},

]

elements.sort(key=itemgetter('symbol'))

print('Sorted list:', elements)

itemgetter函数获取symbol的值:

Sorted list: [

{'name': 'Silver', 'number': 47, 'symbol': 'ag'},

{'name': 'Iron', 'number': 26, 'symbol': 'fe'},

{'name': 'Germanium', 'number': 25, 'symbol': 'ge'}

]

三、总结

我们已经向你展示在 Python 中如何使用sort()方法和sorted()函数对列表进行排序。

如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群:

加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646

原文 :https://linuxize.com/post/python-list-sort/

相关推荐

python优先级排序_Python 列表排序相关推荐

  1. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  2. python 列表排序_python列表排序有哪些

    python列表排序:1.冒泡排序,是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来:2.插入排序,通过构建有序序列,对于未排序数据,在已排序序列中 ...

  3. python列表的排序方法是_Python列表排序 reverse、sort、sorted 操作方法详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  4. Python对IP地址列表排序、对列表进行去重、IP地址与MAC地址组合的多个元组的列表排序

    1.python对IP地址列表排序 # -*- coding: utf-8 -*-import socket listIP = ['10.5.11.1', '192.168.1.33', '10.5. ...

  5. Python对IP地址列表排序、对列表进行去重、IP地址与MAC地址组合的多个元组的列表排序,对列表内的元组升序和降序排序

    1.python对IP地址列表排序 # -*- coding: utf-8 -*-import socket listIP = ['10.5.11.1', '192.168.1.33', '10.5. ...

  6. python定义一个函数列表排序_Python 列表(修改、添加、删除、排序)

    Python的基本数据类型有整数,浮点数,布尔,字符串,它们是最基本的数据.在实际编程中,我们要经常组织由很多基本数据组成的集合,这些集合的不同组织方式就是:数据结构,今天讲的是数据结构中的Pytho ...

  7. python升序和降序排序_python中序列的排序,包括字典排序、列表排序、升序、降序、逆序...

    一.基础概念 我们知道python中的内建序列包括字典.列表.元组.字符串等,序列是python中最基本的数据结构. 列表.元组.字符串这类的序列的索引默认第一个元素的索引从0开始,第二个元素的索引是 ...

  8. python数组排序返回索引_python列表排序返回索引

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我需要对列表进行排序,然后返回一个列表,其中包含列表中排序项的索引... 我有一 ...

  9. python列表数据排序_Python中,如何将列表中数据排序给列表排序?

    在程序中使用字典进行数据信息統计时由于字典是无序的所以打印字典时内容也是无序的.因此为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排序和按&quo ...

  10. python数字排序_python数字排序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...

最新文章

  1. 拼多多高速冲刺8亿用户新时代 黄峥卸任董事长 探索行业未来十年发展
  2. synchronize和lock的区别 synchionzie与volatile的区别
  3. 论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts
  4. web前端试题和答案
  5. VTK:PolyData之PolyDataToUnstructuredGrid
  6. php从mysql资源类型_php从mysql里读出来的数据默认什么类型?
  7. python complex 如何取出实数部分_【PYthon报错】np.complex128数字的虚数部分为0j
  8. PostgreSQL Json字段作为查询条件的解决方案
  9. sysV init服务脚本(入门级)
  10. 淦!看了 B 站上的这些 Python 视频,我站起来了!
  11. 深度装机大师一键重装_做好电脑重装系统前后的这些注意事项,让你从此摆脱装机忧愁!...
  12. Linux下通过ODBC连接数据库
  13. Hexo/Github.io 配置腾讯云CDN
  14. FusionStorage原理及组件,Java面试回忆录
  15. 沈向洋回归,从微软独立的小冰要弯道超车了
  16. C Primer Plus(6) 中文版 第5章 运算符、表达式和语句 5.2 基本运算符
  17. 企业进行固定资产盘点的作用
  18. 面试官:什么是虚拟DOM?如何实现一个虚拟DOM?
  19. 强大的CSS:颜色、背景和剪切
  20. react render相关 【类组件、函数组件 】

热门文章

  1. WSUS 3.0 SP2 部署安装
  2. ASP.NET MVC 3 Preview1发布
  3. 33. vmstat
  4. 4. PDO 事务处理
  5. 3. wordpress 固定链接
  6. jquery中的尺寸函数width(),height(),innerWidth(),outerWidth()等的用法
  7. ssh-keygen的使用方法及配置authorized_keys两台linux机器相互认证
  8. hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)
  9. java 反射 获取Class对象的三种方式
  10. valgrind检测内存泄露