Python sort() 和 sorted() 的区别应用实例详解
大家好,今天针对 Python 中 sort() 和 sorted() 之间的区别,来一个实例详细解读。sort — 顾名思义就是排序的意思,它可以接收的对象为可迭代的数据类型。今天以列表为例子演示两者的不同点、相同点,以及其中一些常用的高级参数使用方法。
sort(),它是不可以储存变量值的 : 例如有一个列表为 day_lst = [‘Monday’,‘Tuesday’,‘Wednesday’,‘Thursday’,‘Friday’,‘Saturday’,‘Sunday’], 当创建一个新的变量名为 new_lst 去执行 day_lst.sort(),然后打印这个变量值,结果为 “None” , 这正验证了 sort() 方法是不可以储存变量值的,因此返回的是空值。
day_lst = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']new_lst = day_lst.sort()print(new_lst)
对 day_lst sort() 排序后,结果为升序 (ascending)
day_lst = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']day_lst.sort()print(day_lst)
sorted(),它是可以储存变量值的 : 同样 列表为 day_lst = [‘Monday’,‘Tuesday’,‘Wednesday’,‘Thursday’,‘Friday’,‘Saturday’,‘Sunday’] ,当创建一个新的变量名为 new_lst 去执行 sorted(day_lst),然后打印这个变量值, 结果为一个已经按升序排序的新列表。
day_lst = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']new_lst = sorted(day_lst)print(new_lst)
以上两种方法,默认的排序方式都是升序 — ascending,那么如果要变成降序 — descending,该怎样实现呢? 只需要加上参数 reverse = True 就可以了。先看看两种方法实现的结果。
day_lst = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']day_lst.sort(reverse=True)print(day_lst)
day_lst = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']new_lst = sorted(day_lst,reverse=True)print(new_lst)
以上可见,当加上参数 reverse = True, 结果完全是倒转了。那就说明了 reverse 这个可选 (optional ) 参数,默认为 False。 我们可以再看看以下图就知道为什么它是可选的参数,又或者说为什么知道有这个参数的存在可选?
根据以上2个图所显示,无论是 sort() 还是 sorted() , 当写入他们的方法后,编译器都会提示显示有相关的可选参数,以及一些自带的可选参数默认的值。而 reverse 就是一个关键字参数,值为 bool 类型,那就是 True 和 False
但可能你们会问,方法带出来的提示并没有显示究竟默认的方式是升序还是降序,那怎样判断呢? 我们可以通过查看相对应的底层代码(源码)看看,这也是作为程序员必须掌握的查看方法,因为每个方法里面,包含好多不同的实现方法、参数用法的解释说明等等。
键盘按着 “Ctrl” 键,然后鼠标移动到相对应的方法,等待方法变成带超链接的状态就可以鼠标点击它,这样就可以进入它的底层代码看相对应的实现规则、逻辑。
"Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order. "
图里的这段话大概意思就是,sorted() 方法返回一个升序的可迭代的数据类型。其中它包含2个参数,一个就是 key,可以自定义; 另外一个就是 reverse,它可以设置为降序的方式。
最后演示一下参数 key 的具体用法,由于 sort() 和 sorted() 这两个方法都支持 key参数,所以只演示 sort(),不再重复 sorted() 这部分了。例如有 num_lst = [50,100,-60,20,40] 这样一个列表。
在传入 key=abs 这个参数后,可见输出的排序结果为 [20, 40, 50, -60, 100], 按照默认升序逻辑,-60 不是最小吗?为什么它排在第4位,而不是第1位呢? 这样要注意的是因为 key 的值为 abs, abs 意思就是绝对值的意思,因此 -60的绝对值就是60,所以编译器就按 -60转为绝对值 60去排序。
day_lst = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']num_lst = [50,100,-60,20,40]num_lst.sort(key=abs)print(num_lst)
例如有一个 letter_lst = [‘E’, ‘G’, ‘X’, ‘b’, ‘f’, ‘y’] 的列表, 在传入key=str.lower 后, 它的作用就是先把列表里的字母的大写字母转换成小写,就相当于首先变成 [‘e’, ‘g’, ‘x’, ‘b’, ‘f’, ‘y’] , 要注意的是, 字符串类型的排序按照ASCII的大小进行比较。根据以下截取的底层代码解释,If a key function is given, apply it once to each list item and sort them,ascending or descending, according to their function values. 意思就是排序的结果是根据它们的值而定。相关的字母 ASCII 对照表,可以看我文章最后的对照图。
因此在转变成全小写列表 [‘e’, ‘g’, ‘x’, ‘b’, ‘f’, ‘y’] 后, 根据它们对应的 ASCII的值,就相当于 [101, 103, 120, 98, 102, 121] 这样的列表, 然后再按升序排序方式,相当于 [98,101,102,103,120, 121 ] , 因此最后输出的结果为 [‘b’, ‘E’, ‘f’, ‘G’, ‘X’, ‘y’] , 因为 98 对应为 b, 101 对应为 e, 102 对应为 f, 103 对应为 g, 120 对应为 x , 121 对应为 y
letter_lst = ['E', 'G', 'X', 'b', 'f', 'y']# num_lst.sort(key=abs)letter_lst.sort(key=str.lower)print(letter_lst)
关于这两个方法的主要常用方法就介绍到这里了, 如果有任何问题,欢迎评论区留言问,有空的时候会尽快回复!
相关文章:

Python sort() 和 sorted() 的区别应用实例详解
大家好,今天针对 Python 中 sort() 和 sorted() 之间的区别,来一个实例详细解读。sort — 顾名思义就是排序的意思,它可以接收的对象为可迭代的数据类型。今天以列表为例子演示两者的不同点、相同点,以及其中一些常用的高级参数使…...

七、Redis三种高级数据结构-HyperLogLog
Redis HyperLogLog是用来做基数统计的算法,HyperLogLog在优点是,在输入的元素的数量或者体积非常大时,计算基数占用的空间总是固定的、并且非常小。在Redis里每个HyperLogLog键只需花费12KB内存,就可以计算接近 264 个元素的基数。…...

2024年【金属非金属矿山(露天矿山)安全管理人员】模拟考试题库及金属非金属矿山(露天矿山)安全管理人员作业模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 金属非金属矿山(露天矿山)安全管理人员模拟考试题库参考答案及金属非金属矿山(露天矿山)安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山&a…...

网站DDoS攻击应对策略:全面防护与恢复指南
随着互联网的发展,网络安全问题日益凸显,其中DDoS(分布式拒绝服务)攻击成为了网站安全的主要威胁之一。当网站遭受DDoS攻击时,可能会面临服务中断、性能下降、数据泄露等严重后果。因此,了解并掌握DDoS攻击…...

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法
最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b,就是线性最小二乘;若f(x) ax2 b / ax2 bx 之类的,就是非线性最小二乘; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…...
mysqldump: Error 2013 导致mysql停止运行
https://www.cnblogs.com/DataArt/p/10173957.html 1 查询表大小 SELECT table_name AS "表名", round(((data_length index_length) / 1024 / 1024), 2) AS "大小(MB)" FROM information_schema.tables WHERE table_schema your_database_name AND …...

2023年数维杯国际大学生数学建模挑战赛D题洗衣房清洁计算解题全过程论文及程序
2023年数维杯国际大学生数学建模挑战赛 D题 洗衣房清洁计算 原题再现: 洗衣房清洁是人们每天都要做的事情。洗衣粉的去污作用来源于一些表面活性剂。它们可以增加水的渗透性,并利用分子间静电排斥机制去除污垢颗粒。由于表面活性剂分子的存在ÿ…...

python 两种colorbar 最大最小和分类的绘制
1 colorbar 按照自定义的最值绘制 归一化方法使用Normalize(vmin0, vmax40.0) import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib.colors as mcolors from matplotlib import rcParams from matplot…...

Linux-基础IO
🌎Linux基础IO 文章目录: Linux基础IO C语言中IO交互 常用C接口 fopen fputs fwrite fgets 当前路径 三个文件流 系统文件IO open函数 …...
202006青少年软件编程(Python)等级考试试卷(二级)
第 1 题 【单选题】 以下程序的运行结果是?( ) l ["兰溪","金华","武义","永康","磐安","东阳","义乌","浦江"]for s in l:if"义"in s:print(…...
【LeetCode】每日一题:2244.完成所有任务需要的最少轮数
给你一个下标从 0 开始的整数数组 tasks ,其中 tasks[i] 表示任务的难度级别。在每一轮中,你可以完成 2 个或者 3 个 相同难度级别 的任务。 返回完成所有任务需要的 最少 轮数,如果无法完成所有任务,返回 -1 。 英文原题…...

百度文心一言 java 支持流式输出,Springboot+ sse的demo
参考:GitHub - mmciel/wenxin-api-java: 百度文心一言Java库,支持问答和对话,支持流式输出和同步输出。提供SpringBoot调用样例。提供拓展能力。 1、依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId…...

59.基于SSM实现的网上花店系统(项目 + 论文)
项目介绍 本站是一个B/S模式系统,网上花店是在MySQL中建立数据表保存信息,运用SSMVue框架和Java语言编写。并按照软件设计开发流程进行设计实现充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SSM的网…...
什么是字节码?
字节码(Bytecode)是Java虚拟机(JVM)能够理解和执行的中间代码。Java源代码首先编译成字节码文件(扩展名为 .class),而不是直接编译成特定机器的机器码。字节码具有以下特点: 平台无…...
C++ JWT的使用
接入sdk需要使用JWT加密参数,做个记录以备后查 #include <iostream> #include <jwt-cpp/jwt.h> int main() { // 设置JWT的密钥(对于HS256) std::string secret_key "your-256-bit-secret"; // 创建一个新的JW…...

SpringBoot内置插件的使用(jackson和lombok)
文章目录 引言I lombok(自动为属性生成构造器)II jacksonsee also引言 idea正式版2021.2.2 已经捆绑安装jackson和lombok插件 I lombok(自动为属性生成构造器) Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。 htt…...

Franz Electron + React 源码启动运行填坑指南
环境要求 安装miniconda python 环境electron/rebuild用得着,miniconda 默认自带的 python 是 3.11 版本,比较新; 安装virsual studio 2019 要把C桌面相关的都安装了,大概需要20G,不要安装到 C 盘,都安装到…...

网络安全法中关于网络信息的保护和监管,有哪些规定?
网络安全法作为我们数字时代的重要法律保障,对于网络信息的保护和监管有着明确且详细的规定。这些规定不仅体现了国家对于网络安全的重视,也为我们每个人在数字世界中提供了坚实的法律屏障。 首先,我们来看一个关于网络运营者主体责任的案例。…...

前端XHR请求数据
axios封装了XHR(XMLHttpRequest) 效果 项目结构 Jakarta EE9,Web项目。 无额外的maven依赖 1、Web页面 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&…...

利用香港多IP服务器优化网站访问速度的关键策略?
利用香港多IP服务器优化网站访问速度的关键策略? 随着数字化时代的不断发展,网站的全球访问速度成为企业吸引用户、提升竞争力的重要因素。特别对于跨国企业而言,如何确保全球用户都能享受到稳定快速的访问体验显得尤为重要。在这一背景下,…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...