Python 序列排序

嗨喽,大家好呀~这里是爱看美女的茜茜呐


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


python中,一般在涉及到列表排序时,都用内置的sort()方法或者全局的sorted()方法,区别如下:

  1. sort()方法只能用于列表排序,不能用于字符串,字典等其他可迭代序列;

    sorted()方法可以用于所有的可迭代序列;

  2. sort()方法是在原列表基础上进行排序,返回None,会破坏原始列表结构;

    sorted()方法是返回一个排序后的新序列,对原始列表无影响;

#sort()排序
>>> a=[6,9,8,4,3,1,2]
>>> b=a.sort()
>>> print(b)
None
>>> print(a)
[1, 2, 3, 4, 6, 8, 9]#sorted()排序
>>> a=[6,9,8,4,3,1,2]
>>> b=sorted(a)
>>> print(b)
[1, 2, 3, 4, 6, 8, 9]
>>> print(a)
[6, 9, 8, 4, 3, 1, 2]

字典排序时,sorted()方法默认是按照字典的键(key)排序的,如下:

>>> a={5:'A',1:'E',4:'B',2:'D',3:'C'}
>>> b=sorted(a)
>>> print(b)
[1, 2, 3, 4, 5]

如果需要按照字典的value排序,可以用下面的方法:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> a={5:'A',1:'E',4:'B',2:'D',3:'C'}
>>> b=sorted(a.items(), key=lambda item:item[1])
>>> print(b)
[(5, 'A'), (4, 'B'), (3, 'C'), (2, 'D'), (1, 'E')]

高级用法

sort()方法和sorted()方法都可以指定参数来处理一些复杂场景的排序

  1. key参数:指定一个函数,可以是内置函数,也可以是自己定义的函数,此函数将在每个元素比较前被调用。

  2. reverse参数:此参数指定True or False,来进行降序或者升序,默认为False(升序)。

如下:

a = ["This", "A", "is", "bag"]
b = sorted(a, key=str.lower)
c = sorted(a, key=str.lower, reverse=True)
print(b)
print(c)['A', 'bag', 'is', 'This']
['This', 'is', 'bag', 'A']

更广泛的使用情况是用复杂对象的某些值来对复杂对象的序列排序,例如:

一个列表保存着每个学生的姓名,档次和分数

student_tuples = [('john', 'A', 96),('leky', 'D', 63),('andy', 'A', 92),('jane', 'B', 82),('dave', 'B', 85),('cany', 'A', 96)
]

场景1、按档次从高到低进行排序

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
student_tuples = [('john', 'A', 96),('leky', 'D', 63),('andy', 'A', 92),('jane', 'B', 82),('dave', 'B', 85),('cany', 'A', 96)
]
print(sorted(student_tuples, key=lambda student: student[1]))[('john', 'A', 96), ('andy', 'A', 92), ('cany', 'A', 96), ('jane', 'B', 82), ('dave', 'B', 85), ('leky', 'D', 63)]

场景2、按分数从高到低排序

方法(1)、使用reverse参数

student_tuples = [('john', 'A', 96),('leky', 'D', 63),('andy', 'A', 92),('jane', 'B', 82),('dave', 'B', 85),('cany', 'A', 96),
]
print(sorted(student_tuples, key=lambda student: student[2], reverse=True))[('john', 'A', 96), ('cany', 'A', 96), ('andy', 'A', 92), ('dave', 'B', 85), ('jane', 'B', 82), ('leky', 'D', 63)]

方法(2)、使用负号(-)

student_tuples = [('john', 'A', 96),('leky', 'D', 63),('andy', 'A', 92),('jane', 'B', 82),('dave', 'B', 85),('cany', 'A', 96),
]
print(sorted(student_tuples, key=lambda student: -student[2]))[('john', 'A', 96), ('cany', 'A', 96), ('andy', 'A', 92), ('dave', 'B', 85), ('jane', 'B', 82), ('leky', 'D', 63)]

注意:负号(-)只能用于数字前面,不能用于字符串前面

场景3、按档次从高到低进行排序,档次相同的按分数从高到底排序

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
student_tuples = [('john', 'A', 96),('leky', 'D', 63),('andy', 'A', 92),('jane', 'B', 82),('dave', 'B', 85),('cany', 'A', 96)
]
print(sorted(student_tuples, key=lambda student: [student[1], -student[2]]))[('john', 'A', 96), ('cany', 'A', 96), ('andy', 'A', 92), ('dave', 'B', 85), ('jane', 'B', 82), ('leky', 'D', 63)]

场景4、按档次从低到高进行排序,档次相同的按分数从低到高排序,最后再按照姓名升序

姓名是字符串,不能在字符串前面用“符号(-)”来排序,可以重写“富比较”方法

class Reversinator(object):def __init__(self, obj):self.obj = objdef __lt__(self, other):return other.obj < self.objstudent_tuples = [('john', 'A', 96),('leky', 'D', 63),('andy', 'A', 92),('jane', 'B', 82),('dave', 'B', 85),('cany', 'A', 96),
]print(sorted(student_tuples, key=lambda student: [student[1], -student[2], Reversinator(student[0])], reverse=True))[('leky', 'D', 63), ('jane', 'B', 82), ('dave', 'B', 85), ('andy', 'A', 92), ('cany', 'A', 96), ('john', 'A', 96)]
尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QandA C++】内存泄漏、进程地址空间、堆和栈、内存对齐、大小端和判断、虚拟内存等重点知识汇总

目录 内存泄漏 内存模型 、进程地址空间 堆和栈的区别 内存对齐 大端小端及判断 虚拟内存有什么作用 内存泄漏 概念: 是指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况, 内存泄漏并不是指内存在物理上的消失, 而是应用程序分配了某段内存后, 因为设计错误…

Docker 安装Redis(集群)

3主3从redis集群配置 1、新建6个docker容器 redis 实例 docker run -d --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381 docker run -d --name redis-node-2 --ne…

2023 “华为杯” 中国研究生数学建模竞赛(E题)深度剖析|数学建模完整代码+建模过程全解全析

​ 问题一 血肿扩张风险相关因素探索建模 思路&#xff1a; 根据题目要求,首先需要判断每个患者是否发生了血肿扩张事件。根据定义,如果后续检查的血肿体积比首次检查增加≥6 mL或≥33%,则判断为发生了血肿扩张。 具体判断步骤: (1) 从表1中提取每个患者的入院首次影像检查…

python基础语法

目录 常量和表达式 变量和类型 1.整数int 2.小数float 3.字符串string 4.布尔类型bool 5.动态类型 注释 输入输出 输出 输入 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 python和C、Java语法区别 创建一个python项目 常量和表达式 在python中&…

String的增删查【C++】

String的增删查【C】 前言string的增删查改构造与析构构造string(const char* str "")赋值构造string(const string& s1) 赋值重载析构函数增reservepush_backappendinsert 删erase 查迭代器流插入流提取流插入流提取 前言 从这里开始可以算是进入了STL的学习中…

CRM客户管理系统英文专业版

外资公司日常沟通的语言以英文为主&#xff0c;业务往来也是涉及到国内外&#xff0c;专业的英文版CRM系统很适合这样的业务团队&#xff0c;尤其CRM供应商是国际化企业&#xff0c;在海外也有分公司、办事处。 多语言 ZOHO支持多语种如英语、汉语、日语等28种语言&#xff0…

MySQL基础篇-函数

目录 1.字符串函数 2.数值函数 3.日期函数 4.流程函数 5.小结 在MySQL中&#xff0c;函数是一种数据库对象&#xff0c;用于执行特定的操作或计算&#xff0c;并返回结果。函数通常用于查询、数据处理和转换&#xff0c;以及在SQL语句中执行其他操作。MySQL提供了许多内置函…

linux驱动之input子系统简述

文章目录 一、什么是input子系统二、内核代码三、代码分析 一、什么是input子系统 Input驱动程序是linux输入设备的驱动程序&#xff0c;我们最常见的就按键&#xff0c;触摸&#xff0c;插拔耳机这些。其中事件设备驱动程序是目前通用的驱动程序&#xff0c;可支持键盘、鼠标…

C++ -- IO流

目录 C语言的输入与输出 CIO流 C标准IO流 C文件IO流 文件常见的打开方式如下 以二进制的形式操作文件 以文本的形式操作文件 读写结构体 stringstream的简单介绍 C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输…

零基础学空手道_3_空手道的站姿(上)

欢迎回来一起学习刚柔流空手道。 讲一些比较严肃的内容&#xff0c;就是礼仪和站姿。 空手道一开始不是要学习怎么打&#xff0c;而是要学习怎么去尊重别人和不打。所以礼仪很重要。 一切事情都是以礼仪开始&#xff0c;以礼仪结束。这叫以理始以理终。 空手道也是这样&#xf…

MySQL - DML数据增删改

功能介绍&#xff1a; DML&#xff08;Data Manipulation Language&#xff09;数据操作语言&#xff0c;用来对数据库中表的数据记录进 行增、删、改操作。 添加数据&#xff08;INSERT&#xff09; 基本语法&#xff1a;insert into 表名(字段列表) values (值列表); …

【问题解决】Android Studio 无法连接手机(荣耀90)无法识别手机usb

问题描述&#xff1a; 使用AS调试的时候遇到一个问题&#xff0c;由于是重装后的电脑&#xff0c;什么都没配置&#xff0c;但是两个旧手机都在安装SDK tools里的Google usb driver后直接连上AS&#xff0c;而我的新手机却死活连不上&#xff0c;查了一下午&#xff0c;啥方法都…

Redis原理(一):Redis数据结构(上)

文章目录 1、 Redis数据结构-动态字符串2、 Redis数据结构-intset3、 Redis数据结构-Dict4、 Redis数据结构-ZipList5、 Redis数据结构-ZipList的连锁更新问题6、 Redis数据结构-QuickList1、 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串…

MongoDB(二)基础操作 创建、删除,查询等

mongodb有一个特点&#xff0c;如果某个库&#xff0c;库下面没数据&#xff08;mongodb成集合&#xff09;&#xff0c;该库等于不存在的 mongodb只要创建一个库&#xff0c;在库下写入数据&#xff0c;该库才会生成 mongoshe [-hhost -pxxx] 创建数据库 use 数据库名 # 如果…

c语言常见字符函数、内存函数(详讲)

前言&#xff1a; 其实在c语言当中是没有字符串这一概念的&#xff0c;不像c里面有string类型用来存放字符串。在c语言中我们只能把字符串放在字符串常量以及字符数组中。 1.常见字符串函数 1.1strlen size_t strlen ( const char * str );作用&#xff1a;用来求字符串中 …

人工智能的未来:从 Jetson 到 GPT,沙龙见闻与洞察

前言 在当今数字化时代&#xff0c;人工智能正以惊人的速度改变着我们的生活和工作方式。从智能语音助手到自动驾驶汽车&#xff0c;从智能家居到医疗诊断&#xff0c;人工智能技术已经广泛渗透到各个行业&#xff0c;并为其带来了巨大的变革和创新。越来越多的行业专家、学者…

postman发送图片

POSTMAN 如何发送携带图片的请求? 闲话不叙 步骤如下&#xff1a; 新建一个请求&#xff0c;在Headers中添加一对k-v : Content-Type > multipart/form-data 请求的接口: RequestMapping("/fileUploadController")public String fileUpload(MultipartFile fil…

【C++】构造函数和析构函数第一部分(构造函数和析构函数的作用)--- 2023.9.25

目录 前言初始化和清理的概念构造函数和析构函数的作用构造函数的作用析构函数的作用 使用构造函数和析构函数的注意事项默认的构造函数和析构函数结束语 前言 在使用c语言开发的项目场景中&#xff0c;我们往往会遇到申请空间的需求&#xff0c;同时也肯定遇到过程序运行一段…

积跬步致千里 || 可视化动图展示

可视化动图展示 目前只能在 jupyter notebook 中测试成功 %matplotlib notebook import numpy as np import matplotlib.pyplot as plt import timen 500 data np.random.normal(0,1,n)fig plt.figure() ax fig.add_subplot(111)fig.show() fig.canvas.draw()for i in ra…

什么是Redux?它的核心概念有哪些?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是Redux&#xff1f;⭐ 它的核心概念有哪些&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发…