Python中的sort()方法使用基础

Python 中的多重排序 本文介绍在Python中实现多重排序的方法 阅读详情

一、基本形式

sorted(iterable[, cmp[, key[, reverse]]])

iterable.sort(cmp[, key[, reverse]])

 参数解释:

 (1)iterable指定要排序的list或者iterable,不用多说;

 (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:

       students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:

1
2
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda student : student[2])

(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:

1
sorted(students, key=lambda student : student[2])

       key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。

二、普通用法:

 1.原址排序

1)列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

1
2
3
x = [4, 6, 2, 1, 7, 9]
x.sort()
print x # [1, 2, 4, 6, 7, 9]

2.副本排序

1)[:]分片方法

1
2
3
4
5
x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。

2)sorted方法

sorted返回一个有序的副本,并且类型总是列表,如下:

1
2
3
4
x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9] 
1
print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']

三、高级用法

1.自定义cmp比较函数

1
2
3
4
5
6
7
8
9
10
11
12
13
def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0
  
nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]

2.自定义key和reverse

1.reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。

2.key在使用时必须提供一个排序过程总调用的函数:

 

1
2
3
4
5
alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = lambda x:(int(x[2]), int(x[1])), reverse = False)
-------------------------------------------------------------------------------------------
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]

 四、operator.itemgetter函数

operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。

1
2
3
4
5
6
7
a = [1,2,3]
>>> b=operator.itemgetter(1)      //定义函数b,获取对象的第1个域的值
>>> b(a)
2
>>> b=operator.itemgetter(1,0)  //定义函数b,获取对象的第1个域和第0个的值
>>> b(a)
(2, 1)

要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。 

itemgetter在sort中的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
from operator import itemgetter
 
alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
 
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = itemgetter(2, 1), reverse = False)
print sorted(alist, cmp = None, key = lambda x:itemgetter(2, 1)(x), reverse = False)
print sorted(alist, cmp = None, key = lambda x:map(int, itemgetter(2, 1)(x)), reverse = False)
--------------------------------------------------------------------------------------------------
 
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]
Python高级排序技巧:使用sort()函数做更多 根据元素的某个特定属性或条件进行排序,而不是按照默认的比较方式。这时可以使用sort()函数的key参数,传入一个自定义的排序函数。在这个示例中,定义了一个名为的函数,该函数返回输入字符串的长度。然后,通过key参数将这个函数传递给sort(),实现了根据字符串长度进行排序。sort()函数支持多种排序方式的组合。在这个示例中,我们结合了key参数和reverse参数,首先根据字符串长度进行排序,然后再进行逆序排序。在Python中,列表是一种常见的数据结构,而对列表进行排序是数据处理中的常见任务之一。 阅读详情

相关推荐

sort()+结构体+多重排序

用法 1、sort函数可以三个参数也可以两个参数,必须的头文件#include &lt; algorithm&gt;和using namespace std;  2、它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n) 3、Sort函数有三个参数:(第三个参数可不写) (1)第一个是要排序的数组的起始地址。 (2)第二个是结束的地址(最后一位要排序的地址) (3)第三个参数...

masterwu1的博客 1920

python 的sort()函数详解

python 的sort()函数详解

qq_20831401的博客 16万+

AgentScope Java多智能体框架

AgentScope Java 的核心设计理念是“Agent-Oriented Programming” (面向智能体编程)。

zzz19920821的博客 1735

Python 列表 sort()函数使用理解

首先我们要知道sort() 可以对列表进行「排序」语法参数返回值返回None,同时将原列表排序。也就是没有返回值案例:将列表中的元素排序。

Echo_3wdiankang的博客 2万+

VisionPro实战:5个工业视觉检测案例详解(附代码片段)

本文详细解析了VisionPro在工业视觉检测中的5个实战案例,包括PCB焊点质量检测、汽车齿轮尺寸测量、药品包装缺陷检测等。通过硬件配置方案和软件算法流程的详细介绍,帮助工程师快速掌握VisionPro的应用技巧,提升工业自动化检测效率。

weixin_29284657的博客 518

复旦微实现串口在线升级BOOT.BIN

将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash

wangjie36的博客 3174

Python之sort()方法和sorted()函数的区别

类里面的叫做方法,类外面叫做函数 sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None;方法sort() 对列表进行永久性排序 sorted() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的新列表,需要接收,也可直接打印;函数 sorted() 对列表进行临时排序 sort() 只是列表的一个方法,只适用...

qq_36016375的博客 1796

Python 安装 PyTorch(GPU)详细教程

本章教程,介绍如何安装PyTorch GPU版本的具体教程。

猿小白的博客 1618

在Python中如何使用sorted()和sort()函数

在某种程度上,所有的程序员都必须编写代码对项目或数据进行排序。在应用程序当中,排序对于用户体验而言是非常重要的,无论是按时间戳对用户最近的活动进行排序,还是按照姓氏的字母顺序排列电子邮件收件人列表。Python的排序功能十分强大,可以在粒度级别上进行基本排序或自定义排序。 在本教程中,你将会学习如何在不同的数据结构中对各种各样的数据类型进行排序和自定义排序,并使用Python中两种不同的排序方法...

java276582434的博客 6万+

华为Ascend_toolkit在x86ubuntu安装失败报错。[WARNING] driver package is not installed. If you install in docker

这个报错发生在交叉编译配置Ascend_toolkit环境时,安装Ascend_toolkit安装包的时候发生。[Y/N]Y。

anananajiushiwo的博客 1018

[低代码 + AI] 明道云与 Dify 的三种融合实践方式详解

融合方式技术路径优点局限或注意事项UI 嵌入iframe 表单嵌入快速集成、用户体验一致无法自定义交互逻辑明道云调用 DifyAPI 请求节点工作流自动化、逻辑灵活有 timeout 限制、需优化 promptDify 调用明道云插件或 API 调用节点可查询实际业务数据、增强 AI 智能需理解明道云 API 结构、权限设置复杂明道云与 Dify 的结合为低代码平台注入了智能动力。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1187

【python】sorted() list.sort()

如果你需要排序后的列表,并且不想修改原始数据,使用sorted函数。如果你只需要对列表进行排序,并且不介意修改原始列表,可以使用方法。sorted函数可以对任何可迭代对象进行排序,而方法只能用于列表。sorted函数返回一个新的列表,而方法没有返回值(因为它直接修改原列表)。

m0_74102736的博客 2357

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

python中的sort排序_python的sort()怎么排序

python中的sort()函数只能应用在列表list上,而sorted可以对所有可迭代的对象进行排序的操作sort方法会在原list上直接进行排序,不会创建新的list。而sorted方法不会对原来的数据做任何改动,排序后的结果是新生成的。如果我们不需要原来的数据而且数据是list类型,可以用sort方法,能够节省空间。否则要用sorted方法。sort在python2中,sort方法可以有3个...

weixin_39719427的博客 1万+

论文阅读:arxiv 2023 EduChat: A Large-Scale Language Model-based Chatbot System for Intelligent Education

EduChat是一个基于大规模语言模型(LLM)的教育领域聊天机器人系统,旨在为教师、学生和家长提供个性化、公平且富有同理心的智能教育服务。该系统通过在教育语料库上进行预训练和特定任务微调,强化了开放式问答、作文评估、苏格拉底式教学和情感支持等教育功能。为解决领域知识不足和知识更新问题,EduChat采用了检索增强技术,并融入心理学和教育学理论。该项目已开源,提供代码、数据和模型参数,推动LLM在智能教育中的应用发展。

CSPhD-winston的博客 1039

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python中sort()函数的详细使用方法

如果函数很复杂时可以分开写,不用匿名函数,只需要先定义比较函数,然后让key=比较函数即可,注意key=函数名称,函数名称不用加()例如按照字符串的长度来排序,len函数用于求字符串的长度,是系统自带的print(L)结果自己定义一个比较函数fun,要求按照数的绝对值进行升序排序print(L)结果先定义比较函数fun用于求绝对值,然后将fun函数传给了key参数,sort方法会遍历列表,将每一个遍历到的元素传入fun函数作为形参x,而fun函数的返回值将作为对应列表元素的排序规则。

m0_62574258的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python中list.sort()方法详解

在python中,如果想对list进行排序,最常见的内置函数就是sort()。下面我们对于list函数的sort方法知识点进行列举。

2401_82586867的博客 2693

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python中的sort()使用方法

Python中的sort()方法使用基础一、基本形式sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说; (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:      ...

memory_qianxiao的博客 14万+

关于python中的sort()的用法及参数说明

python中提供sort()函数用于列表的排序,sort()函数共有两个参数, 分别为:key和reverse 其中key用于指定一个函数,即key=函数,即为排序提供一种方法 reverse意为翻转的意思,可以呈现为降序排序等。 b = ['p','py','pyt','pyth','pytho','python'] # 让sort函数按照len函数提供的字符串长短进行排序,默认为升序 b.s...

coral_zsy的博客 1万+

python中sort()函数的应用

1.描述 sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。 2.语法 list.sort(cmp=None, key=None, reverse=False) 参数: cmp – 可选参数, 如果指定了该参数会使用该参数的方法进行排序。 key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse – 排序规则,reverse = True 降序, reverse = False 升

qq_24889005的博客 7631

Python中的sort()和sorted()用法

Python提供了两种排序方法:list.sort()和sorted()。两种排序分别如何使用?它们的原理又是什么?

记录应用与学习笔记,Python、算法、工具、踩坑... 3343

python中sort()与sorted()的区别

本文主要介绍一下python中的sort()和sorted()的区别和一些常用方法 1.主要区别 sort 是应用在 list 上的方法,而sorted 可以对所有可迭代的对象进行排序操作; sort是对原有列表进行操作,而sorted返回的是一个新的可迭代对象,不会改变原来的对象; sort使用方法为list.sort(), 而sorted的使用方法为sorted(list) 2.sort()的主要用法 最简单的使用 a = [2, 1, 5, 4] # reverse参数,对列表进行排序,True为

weixin_45598494的博客 9820

python中怎么调用sort_详解Python中的sort()使用方法

一、基本形式sorted(iterable[, cmp[, key[, reverse]]])iterable.sort(cmp[, key[, reverse]])参数解释:(1)iterable指定要排序的list或者iterable,不用多说;(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:students为类对象的list,没个成员有三个域,用sor...

weixin_32534943的博客 5980

Python中sort()和sorted()的差异

sort()方法的定义:列表的内置方法sorted()方法的定义:Python的内置函数从定义上发现,sort()的第一个参数包含self,也就是说sort()在类中定义,应称之为方法,而sorted()没有self参数,属于Python的内置函数,跟print()函数是一样的。一句话概括下sort()方法和sorted()函数的差异:sort()方法是“原地”排序,sorted()函数是“外地”排序。以上就是“Python中sort()和sorted()的差异”的全部内容,希望对你有所帮助。

Trb401012的博客 1890

Python 列表 sort()函数使用详解

sort() 可以对列表进行「排序」

wangyuxiang946的博客 7万+
上一篇: Python读取键盘输入的2种方法
下一篇: Python 字典(Dictionary) get()方法
叮咯咙咚呛36
博客等级 码龄14年 169粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值