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

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题 洗衣房清洁计算 原题再现: 洗衣房清洁是人们每天都要做的事情。洗衣粉的去污作用来源于一些表面活性剂。它们可以增加水的渗透性,并利用分子间静电排斥机制去除污垢颗粒。由于表面活性剂分子的存在&#xff…...

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 。 英文原题&#xf…...

百度文心一言 java 支持流式输出,Springboot+ sse的demo

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

59.基于SSM实现的网上花店系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;网上花店是在MySQL中建立数据表保存信息&#xff0c;运用SSMVue框架和Java语言编写。并按照软件设计开发流程进行设计实现充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SSM的网…...

什么是字节码?

字节码&#xff08;Bytecode&#xff09;是Java虚拟机&#xff08;JVM&#xff09;能够理解和执行的中间代码。Java源代码首先编译成字节码文件&#xff08;扩展名为 .class&#xff09;&#xff0c;而不是直接编译成特定机器的机器码。字节码具有以下特点&#xff1a; 平台无…...

C++ JWT的使用

接入sdk需要使用JWT加密参数&#xff0c;做个记录以备后查 #include <iostream> #include <jwt-cpp/jwt.h> int main() { // 设置JWT的密钥&#xff08;对于HS256&#xff09; 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用得着&#xff0c;miniconda 默认自带的 python 是 3.11 版本&#xff0c;比较新&#xff1b; 安装virsual studio 2019 要把C桌面相关的都安装了&#xff0c;大概需要20G&#xff0c;不要安装到 C 盘&#xff0c;都安装到…...

网络安全法中关于网络信息的保护和监管,有哪些规定?

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

前端XHR请求数据

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

利用香港多IP服务器优化网站访问速度的关键策略?

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

Windows 11 上安装 MinGW-w64 并运行 LVGL SDL 模拟器

目前最推荐的方式是使用 MSYS2。它安装简单、包管理方便&#xff08;pacman&#xff09;&#xff0c;而且能直接安装 SDL2&#xff0c;避免手动复制头文件和库的麻烦。 以下是完整、推荐的步骤&#xff08;2026 年最新实践&#xff09;&#xff1a; 1. 安装 MSYS2&#xff08…...

如何高效突破Cursor试用限制:全功能AI编程助手解锁指南

如何高效突破Cursor试用限制&#xff1a;全功能AI编程助手解锁指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tr…...

OpenClaw多模型切换指南:Qwen3.5-9B与Llama3混合调度实战

OpenClaw多模型切换指南&#xff1a;Qwen3.5-9B与Llama3混合调度实战 1. 为什么需要多模型切换&#xff1f; 去年我在搭建个人AI工作流时&#xff0c;发现单一模型很难满足所有需求。用Qwen处理文档时效果惊艳&#xff0c;但遇到代码生成任务就显得力不从心&#xff1b;换成专…...

重磅发布!集装箱式SST直流移动智算中心

NEWS3月28日&#xff0c;台达、汉腾科技与龙芯中科联合宣布重磅发布集装箱式 SST&#xff08;固态变压器&#xff09;直流移动智算中心&#xff0c;发布活动于台达吴江制造基地举行。这款全新方案以台达 SST 固态变压器为核心能源支撑&#xff0c;深度集成CPU、AI 加速卡与服务…...

嵌入式开发中数据结构的优化与应用实践

1. 数据结构在嵌入式开发中的核心价值作为一名在嵌入式领域摸爬滚打十年的老兵&#xff0c;我深刻体会到数据结构就像瑞士军刀里的各种工具——选对工具能让工作事半功倍。在资源受限的MCU环境中&#xff0c;一个精心选择的数据结构可能意味着程序能否流畅运行和内存是否会爆掉…...

Krita 5.3.0 与 6.0.0 发布:功能升级与技术革新

文本与工具革新&#xff0c;Krita 功能升级Krita 5.3.0 和 6.0.0 正式推出&#xff0c;带来了一系列显著的功能改进。文本工具被完全重写&#xff0c;支持在画布上进行所见即所得编辑&#xff0c;还能支持 OpenType 的所有特性以及文本置入形状&#xff0c;这大大提升了文字处理…...

拯救者笔记本性能优化终极指南:如何用Lenovo Legion Toolkit释放硬件潜力

拯救者笔记本性能优化终极指南&#xff1a;如何用Lenovo Legion Toolkit释放硬件潜力 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionTool…...

N_m3u8DL-CLI-SimpleG:快速下载M3U8视频的终极指南

N_m3u8DL-CLI-SimpleG&#xff1a;快速下载M3U8视频的终极指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG N_m3u8DL-CLI-SimpleG是一个专门用于下载M3U8流媒体视频的开源工具…...

Cocos Creator 屏幕适配实战:从设计分辨率到完美适配的完整指南

1. 理解屏幕适配的核心概念 第一次用Cocos Creator做横屏游戏时&#xff0c;我盯着iPad和手机上完全变形的UI界面愣了半天。这才明白为什么老司机们总说&#xff1a;"屏幕适配不做&#xff0c;上线火葬场"。屏幕适配的本质是解决设计分辨率&#xff08;美术产出资源时…...

Flink源码阅读:双流操作

Window Join我们先回顾一下 window join 的使用方法。DataStream<Tuple2<String, Double>> result source1.join(source2).where(record -> record.f0).equalTo(record -> record.f0).window(TumblingEventTimeWindows.of(Time.seconds(2L))).apply(new Joi…...