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

python sorted函数详解2023.9.11

sorted函数详解

  • 1. 输入和输出
  • 2. key传入函数

1. 输入和输出

help(sorted)

Help on built-in function sorted in module builtins:
sorted(iterable, /, *, key=None, reverse=False)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 thereverse flag can be set to request the result in descending order.

sorted函数是一个python内置函数,就Python3.9.16来说,函数输入:(iterable, /, *, key=None, reverse=False)

  • iterable :任何可迭代的对象(字符串、列表、元组、字典等)
  • /: / 不代表任何参数,实际调用时该位置不用传值,它仅指示前面的都是位置参数,无需且不能进行关键字参数。
  • *:*出现在函数参数中第一种含义可以表示为可变参数,一般写作*args;对于单独出现在参数中的*参数,则表示,*后面的参数必须为关键字参数的形式.
  • key:A custom key function can be supplied to customize the sort order。接收一个函数来实现自定义的排序
  • reverse:the reverse flag can be set to request the result in descending order. reverse=False表示不用反转,正常数数(升序1234…),reverse=True表示需要反转,倒数(降序10987…)。

PS: 在python3.8之后函数参数中允许出现/和*号。

sorted函数输出:和输入类型相同的新的可迭代对象。

2. key传入函数

分析示例1:

# 创建包含姓名和成绩的列表
pairs = [("Alice", 85), ("Bob", 92), ("Charlie", 77), ("David", 92), ("Eve", 85)]# 使用sorted函数进行排序,首先按成绩排序,然后按姓名字母顺序排序
sorted_pairs = sorted(pairs, key=lambda x: (-x[1], x[0]))# 打印排序后的结果
for name, score in sorted_pairs:print(f"{name}: {score}")

  先回顾lambda python语法lambda [arg1 [,arg2,.....argn]]:expression:匿名函数声明lambda,冒号前是输入参数,冒号后是表达式。PS: 语法中方括号只是用来表示参数列表的可选性,表明它们不是必需的部分。

# lambda 输入参数:表达式,实现将输入参数带入表达式并返回表达式的值这一函数功能
lambda x, y: x*y			# 函数输入是x和y,输出是它们的积x*y
lambda:None					# 函数没有输入参数,输出是None
lambda *args: sum(args)		# 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
lambda **kwargs: 1			# 输入是任意键值对参数,输出是1

  在深入了解一下sorted机理,key所表示函数只能返回可比较值,sorted会默认按照key所表示函数的返回值进行升序排列。但是如果返回值是一个元组时元组的第一个元素是用于排序的标准,第二个元素是用于次要排序的标准。 具体来说,就是按照元组的第一个元素进行升序排序,然后如果第一个元素相同时,按照元组的第二个元素进行升序排序。

来回忆一下Python的变量,可比较值会加粗:

整数(int):用于表示整数值,比如 42 或 -10。
浮点数(float):用于表示带有小数部分的数值,比如 3.14 或 -0.25。
字符串(str):用于表示文本数据,比如 ‘Hello, World!’ 或 “Python”。逐字符比较

可迭代变量都是先比较第一个元素,挨个继续的,先终止迭代的认为是小的。

布尔值(bool):用于表示逻辑值,只有两个可能的值,True 和 False。False 小于 True。
列表(list):用于表示有序的可变序列,可以包含不同类型的元素。
元组(tuple):用于表示有序的不可变序列,也可以包含不同类型的元素。
集合(set):用于表示无序的、唯一的元素集合。
字典(dict):用于表示键值对的集合,每个键对应一个值。

尽管默认情况下迭代一个字典将返回字典的键。但一般认为字典无法直接迭代键值对,需要用使用字典的 .keys()、.values() 或 .items() 方法来迭代键、值或键值对。

NoneType(None):用于表示缺少值或空对象。
自定义对象(自定义类):可以创建的类和对象,这些对象具有自定义的属性和方法。

sorted函数在构建时考虑了排序稳定性,即当多个记录具有相同的键值时,将保留其原始顺序。

data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
sorted(data, key=itemgetter(0))  # 按照key进行排序,blue>red,因为ASCLL表中b>r
>>[('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]

这说明如果第一个元素排序完,相同的值顺序不会变,这是相同的值可以通过key返回为元组时的第二个元素进行次要排序控制的基础。

相关文章:

python sorted函数详解2023.9.11

sorted函数详解 1. 输入和输出2. key传入函数 1. 输入和输出 help(sorted) Help on built-in function sorted in module builtins: sorted(iterable, /, *, keyNone, reverseFalse)Return a new list containing all items from the iterable in ascending order.A custom k…...

Spring Reactive:响应式编程与WebFlux的深度探索

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

Qt应用开发(基础篇)——工具按钮类 QToolButton

一、前言 QToolButton类继承于QAbstractButton,该部件为命令或选项提供了一个快速访问按钮,通常用于QToolBar中。 按钮基类 QAbstractButton QToolButton是一个特殊的按钮,一般显示文本,只显示图标,结合toolBar使用。它…...

【数据结构面试题】栈与队列的相互实现

目录 1.队列实现栈 1.1创建栈 1.2判断是否为空 1.3入栈 1.4出栈 1.5获取栈顶元素 1.6完整代码 2. 用栈实现队列 2.1创建队列 2.2判断是否为空 2.3入队列 2.4出队列 2.5获取队头元素 2.6完整代码 1.队列实现栈 用队列实现栈https://leetcode.cn/problems/impleme…...

华为认证和红帽认证哪个比较好考呢

华为认证和红帽认证的考试难度、学习内容、适用范围等方面都有所不同,因此哪个比较好考要视具体情况而定: 考试难度:红帽认证的考试难度较高,需要考生具备较高的技术水平和实践经验;而华为认证则更注重基础知识的考察…...

[Java]_[中级]_[使用okhttp3和HttpClient代理访问外部网络]

场景 Java的http库常用的有HttpClient和Okhttp3, 如果公司有限制网络访问&#xff0c;需要代理才可以访问外网&#xff0c;那么如何使用代理Proxy&#xff1f; <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient<…...

ubuntu 20.04 docker 安装 mysql

要在Ubuntu 20.04上安装Docker并运行MySQL容器&#xff0c;您可以按照以下步骤操作&#xff1a; 1.更新系统包列表&#xff1a; sudo apt update2.安装Docker&#xff1a; sudo apt install docker.io3.启动Docker服务并设置其开机自启动&#xff1a; sudo systemctl start…...

C++在C语言基础上的优化

目录 一、命名空间 1、命名空间的定义 2、命名空间的使用 二、输入&输出 三、缺省参数 1、缺省参数的概念 2、缺省参数的分类 四、函数重载 五、引用 1.引用的概念 2.引用的特性 3、引用和指针的区别 六、内联函数 七、基于范围的for循环 一、命名空间 命名空…...

分享一个python实验室设备预约管理系统 实验室设备维修系统源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…...

兵者多诡(HCTF2016)

环境:https://github.com/MartinxMax/CTFer_Zero_one 题目简介 解题过程 登录首页 提交png图片上传抓包&#xff0c;可以看到是向upload文件提交数据 在fp参数中尝试伪协议读取home.php文件 http://127.0.0.1:88/HCTF2016-LFI/home.php?fpphp://filter/readconvert.base64…...

【JAVA-Day04】Java关键字和示例:深入了解常用关键字的用法

Java关键字和示例&#xff1a;深入了解常用关键字的用法 摘要Java 关键字、标识符和命名规范一、Java 关键字常用关键字DEMO1. 示例代码使用 if 和 else 关键字&#xff1a;2. 示例代码使用 for 循环&#xff1a;3. 示例代码使用 switch 关键字&#xff1a;4. 示例代码使用 wh…...

Android请求网络报错:not permitted by network security policy

一、错误记录 https的接口请求正常的&#xff0c; 请求http的接口时报错&#xff1a;not permitted by network security policy 二、问题分析 原因&#xff1a; 由于 Android P(版本27以上) 限制了明文流量的网络请求&#xff0c;非加密的流量请求都会被系统禁止掉。如果当…...

python报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1

python报错&#xff1a;ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1 问题分析 说明&#xff1a;requests包引入了urllib3&#xff0c;而新版本的urllib3 需要OpenSSL 1.1.1以上版本&#xff0c;否则报错&#xff1a; ImportError: urllib3 v2.0 only supports Ope…...

如何使用adb command来设置cpu频率和核数

透過ADB Shell設定CPU開核與freq的command與用法如下: # Disable PPM echo 0 > /proc/ppm/enabled # Enable PPM (Default) echo 1 > /proc/ppm/enabled echo 0 > /proc/ppm/enabled Fixed # Core for each cluster echo X Y > /proc/ppm/policy/ut_fix_core_num …...

236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 题目-中等难度示例1. dfs 题目-中等难度 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p…...

Git常见问题:git pull 和 git pull --rebase二者区别

git pull 和 git pull --rebase 都是从远程仓库获取最新的更改并将其合并到本地分支。但它们之间的区别在于合并方式。以下是它们之间的主要区别&#xff1a; git pull&#xff1a; 当你执行 git pull 时&#xff0c;Git 会执行以下两个操作&#xff1a; git fetch&#xff…...

关于HarmonyOS元服务的主题演讲与合作签约

一、感言 坚持中&#xff0c;总会有很多意想不到的收获。 前几次参与HDC时更多的是观众、开发者、专家的身份&#xff0c;以参观、学习、交流为主。 通过几年的努力&#xff0c;和HarmonyOS功能成长&#xff0c;在2023年的HDC大会中&#xff0c;有了我的演讲&#xff0c;并带领…...

cache 学习

好文章&#xff1a; Cache的基本原理 - 知乎...

SSM - Springboot - MyBatis-Plus 全栈体系(六)

第二章 SpringFramework 四、SpringIoC 实践和应用 3. 基于 注解 方式管理 Bean 3.1 实验一&#xff1a;Bean 注解标记和扫描 (IoC) 3.1.1 注解理解 和 XML 配置文件一样&#xff0c;注解本身并不能执行&#xff0c;注解本身仅仅只是做一个标记&#xff0c;具体的功能是框…...

【Flutter】引入网络图片时,提示:Failed host lookup: ‘[图片host]‘

在使用 NetworkImage 组件加载外部图片时&#xff0c;提示 Failed host lookup: [图片host] 错误。 排查方向 1、清理缓存 解决方案&#xff1a; 尝试flutter clean清空缓存后重新安装依赖flutter pub get重新构建项目flutter create . 走完上述三个步骤后&#xff0c;再次…...

Python基础教程:索引和切片

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 索引&#xff08;下标&#xff09; 索引又称下标&#xff0c;用来表示可迭代对象中的某个元素的位置。 用正整数表示的索引值&#xff0c;从左向右定位&#xff0c;从 0 开始计数&#xff0c;如 0&#xff0c;1&#…...

JVM基础面试题

JDK、JRE、JVM的关系 JVM Java虚拟机&#xff0c;它只识别.class类型文件&#xff0c;它能将class文件中的字节码指令进行识别并调用操作系统向上的API完成动作。 JRE Java运行时环境。它主要包含两部分&#xff1a;Jvm的标准实现和Java的一些基本类库。相对于JVM来说,JRE多出来…...

蓝桥杯官网填空题(平方末尾)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 能够表示为某个整数的平方的数字称为“平方数” 虽然无法立即说出某个数是平方数&#xff0c;但经常可以断定某个数不是平方数。 因为平方数的末位只可能是&#x…...

深入探究数据结构与算法:构建强大编程基础

文章目录 1. 为什么学习数据结构与算法&#xff1f;1.1 提高编程技能1.2 解决复杂问题1.3 面试准备1.4 提高代码效率 2. 学习资源2.1 经典教材2.2 在线学习平台2.3 学习编程社区 3. 数据结构与算法的实际应用3.1 排序算法3.2 图算法3.3 字符串匹配算法 4. 结论 &#x1f389;欢…...

Android 自定义View之圆形进度条

很多场景下都用到这种进度条&#xff0c;有的还带动画效果&#xff0c; 今天我也来写一个。 写之前先拆解下它的组成&#xff1a; 底层圆形上层弧形中间文字 那我们要做的就是&#xff1a; 绘制底层圆形&#xff1b;在同位置绘制上层弧形&#xff0c;但颜色不同&#xff…...

力扣(LeetCode)算法_C++——字母异位词分组

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”…...

【LeetCode-中等题】59. 螺旋矩阵 II

文章目录 题目方法一&#xff1a;二维数组缩圈填数字方法二&#xff1a; 题目 方法一&#xff1a;二维数组缩圈填数字 定义四个边界条件&#xff0c;每转一圈&#xff0c;把数值填进去&#xff0c;然后缩小一圈&#xff0c;直到不满足条件位置 结束循环条件可以是&#xff1a; …...

错误: 找不到或无法加载主类 Main

在用git回退到上个版本后发现&#xff0c;无法运行项目并提示 错误: 找不到或无法加载主类 Main 可以看到Main前面的图标也是号。 查了半天没有解决&#xff0c;问了个大佬&#xff0c;大佬一下就解决掉了&#xff0c;本文记录下解决过程。 错误原因是编辑器无法找到代码位置&…...

【云原生】Kubeadmin安装k8s集群

目录 前言&#xff1a; 一 环境部署 1.1 服务器部署功能 1.2 环境准备&#xff08;所有节点&#xff09; 二 安装docker&#xff08;所有节点&#xff09; 三 所有节点安装kubeadm&#xff0c;kubelet和kubectl 3.1 定义kubernetes源 3.2 开机自启kubelet 四 部署K8S集…...

Java:Springboot和React中枚举值(数据字典)的使用

目录 1、开发中的需求2、实现效果3、后端代码4、前端代码5、接口数据6、完整代码7、参考文章 1、开发中的需求 开发和使用过程中&#xff0c;通常会涉及四个角色&#xff1a;数据库管理员、后端开发人员、前端开发人员、浏览者 数据库使用int类型的数值进行存储&#xff08;e…...

有什么做服装的网站好/长春网站快速排名提升

需求1&#xff1a;跑大sql内存不够用 虽然知道怎么改&#xff0c;但是对这几个配置一直是模糊不清晰&#xff0c;所以特意在下面写下&#xff0c;我所知道的。 需求2&#xff1a;Eclipse崩溃&#xff0c;错误提示&#xff1a; MyEclipse has detected that less than 5% of the…...

网站开发的标准/seo排名推广工具

去年五六月在一台很老的mac机&#xff08;2014&#xff09;上安装过as和flutter环境&#xff0c;对于一个长期用win的安卓开发来说&#xff0c;第一次配置和使用mac真的痛苦。 今天&#xff0c;终于2014的8g机子报废了&#xff0c;公司配了一台2020新版mbp&#xff0c;32gi71t…...

wordpress系统密码忘记/快速提升网站排名

1.JavaScript打印 <input id"btnPrint" type"button" value"打印" οnclick"javascript:window.print();" /> 可以用样式控制&#xff0c;你想让那块打印就打印啊&#xff0c;样式如下&#xff1a; <style type"text…...

新手怎么搭建网站/现在如何进行网上推广

ueditor以下错误&#xff1a; ““/”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 未能执行 URL。 说明: 执行当前 Web 请求期间&#xff0c;出现未处理的异常。请检查堆栈跟踪信息&#xff0c;以了解有关该…...

ps做的网站保存不了jpg/百度网盘登录首页

源&#xff1a;在 WindowMobile 上的模拟LED 显示屏插件 我在给一个对话框上的控件查找翻看合适的图标时&#xff0c;无形中看到了一个LED显示屏的图标&#xff0c;这里所说的LED显示屏是指由很多LED灯密集排列组成的点阵式LED屏&#xff0c;比如在股市交易所&#xff0c;公交车…...

网站建设递进发展趋势/百度2022最新版本

蜘蛛和蜜蜂订婚,蜘蛛感到很不满意&#xff0c;于是就问他的妈妈&#xff1a;"为什么要让我娶蜜蜂&#xff1f;"蜘蛛的妈妈说&#xff1a;"蜜蜂是吵了一点&#xff0c;但人 家好歹也是个空姐。"蜜蜂也感到很不满意&#xff0c;于是就问她的妈妈&#xff1a…...