当前位置: 首页 > news >正文

Python的sort()与sorted()函数详解

目录

sort()函数

sorted()函数

key参数

区别


sort()函数

sort()方法:该方法用于原地对列表进行排序,即直接在原始列表上进行排序操作,并不返回一个新的列表。

my_list = [3, 1, 4, 2, 5]
my_list.sort()
print(my_list)  # 输出: [1, 2, 3, 4, 5]

sorted()函数

sorted()函数:该函数对可迭代对象进行排序,并返回一个新的已排序的列表。原始列表不会被修改。

my_list = [3, 1, 4, 2, 5]
new_list = sorted(my_list)
print(new_list)  # 输出: [1, 2, 3, 4, 5]

对字符串进行排序时,返回列表:

s="oplk"
p=sorted(s)
print(p)
#输出:['k', 'l', 'o', 'p']

key参数

sorted()函数中,key参数用于指定一个函数来用作排序的关键字。这个函数将被应用于可迭代对象中的每个元素,并根据函数返回值进行排序。

key参数接受一个函数作为参数,该函数接受一个元素作为输入,并返回一个值。sorted()函数将使用这个返回值来确定元素的排序顺序。

  • 按照元素的绝对值进行排序:
my_list = [5, -3, 2, -1, 4]
new_list = sorted(my_list, key=abs)
print(new_list)  # 输出: [-1, 2, -3, 4, 5]
  • 按照元素的长度进行排序: 
my_list = ['apple', 'banana', 'cherry', 'date']
new_list = sorted(my_list, key=len)
print(new_list)  # 输出: ['date', 'apple', 'cherry', 'banana']

其实 key = len 实质是函数。 

  • 自定义函数进行排序: 
def sort_by_last_character(string):return string[-1]my_list = ['apple', 'banana', 'cherry', 'date']
new_list = sorted(my_list, key=sort_by_last_character)
print(new_list)  # 输出:['banana', 'apple', 'date', 'cherry']

这里我们定义了一个名为sort_by_last_character的函数,它返回字符串的最后一个字符。然后,我们将这个函数传递给key参数来进行排序。


区别

  1. sort()方法是对可变的列表对象进行操作,而sorted()函数可以用于任何可迭代的对象。
  2. sort()方法在原地进行排序,会修改原列表;sorted()函数返回一个新的已排序的列表,不改变原列表。
  3. 如果需要保留原列表的顺序,可以使用sorted()函数并将结果赋值给一个新的变量;如果不需要保留原列表或需要在原列表上进行操作,可以使用sort()方法。
  4. sort()方法没有返回值,而sorted()函数会返回一个新的已排序的列表,可以将其赋值给一个变量以进行后续操作。
  5. sort()方法和sorted()函数都支持传递一些可选参数,例如key用于指定一个函数来用作排序的关键字,reverse用于指定排序顺序是否为降序等。
http://www.lryc.cn/news/162086.html

相关文章:

  • 用python实现基本数据结构【04/4】
  • “必抓!”算法
  • 【监控系统】Promethus整合Alertmanager监控告警邮件通知
  • 【韩顺平】Linux基础
  • 好奇一下各个大模型对华为mate60系列的看法
  • UMA 2 - Unity Multipurpose Avatar☀️五.如何使用别人的Recipe和创建自己的服饰Recipe
  • 代码随想录训练营第五十六天| 583. 两个字符串的删除操作 、72. 编辑距离
  • hive解决了什么问题
  • Lumion 和 Enscape 应该选择怎样的笔记本电脑?
  • ICCV 2023 | MoCoDAD:一种基于人体骨架的运动条件扩散模型,实现高效视频异常检测
  • Mac电脑怎么使用NTFS磁盘管理器 NTFS磁盘详细使用教程
  • Java设计模式-结构性设计模式(代理设计模式)
  • 线性空间、子空间、基、基坐标、过渡矩阵
  • 【MySQL】CRUD (增删改查) 基础
  • Socks5代理IP:保障跨境电商的网络安全
  • macOS通过钥匙串访问找回WiFi密码
  • Debian11之稳定版本Jenkins安装
  • kakfa 3.5 kafka服务端处理消费者客户端拉取数据请求源码
  • 【Linux】进程概念I --操作系统概念与冯诺依曼体系结构
  • BRAM/URAM资源介绍
  • 分享一个基于python的个性推荐餐厅系统源码 餐厅管理系统代码
  • Mysql5.7开启SSL认证且支持Springboot客户端验证
  • 微信小程序的页面滚动事件监听
  • 数据可视化:四大发明的现代转化引擎
  • HarmonyOS实现几种常见图片点击效果
  • 3D视觉测量:计算两个平面之间的夹角(附源码)
  • deepin V23通过flathub安装steam畅玩游戏
  • C语言是否快被时代所淘汰?
  • 简化转换器:使用您理解的单词进行最先进的 NLP — 第 1 部分 — 输入
  • C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)