Python sorted 函数:Key参数,以及lambda 函数与常规写法区别

Python sorted 函数:Key参数,以及lambda 函数与常规写法区别

第一种方式:

ous = sorted(ouFilter.ous, key=lambda ou:ou.path)
  • 使用 lambda 函数作为排序的关键字,这是一个简洁、明了的方式。lambda 函数在 Python 中表示一个简
    单的匿名函数,它没有自己的名字,因此在代码中不需要为它预留名字。在排序的上下文中,key 参数通
    常用于指定一个函数,该函数应用在输入序列的每一个元素上,其返回值被排序函数使用

第二种方式:

def key(ou):return ou.path
ous = sorted(ouFilter.ous, key=key)
  • 这里定义了一个名为 key 的函数,然后将其作为参数传递给 sorted 函数。虽然这也是有效的,但它的可读
    性稍差。在一般的编程实践中,如果一个函数被只使用一次,那么使用 lambda 函数会更简洁,也更具可
    读性。如果 key 函数需要在多个地方反复使用,那么定义一个完整的函数是合理的。

Key 参数解释说明:

words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words) # 输出:['date', 'apple', 'cherry', 'banana']
  • 你会发现 在这里是不需要使用 len(x) 这样的格式,甚至连括号都不需要,因为 sorted 函数的 key 参数,
    用于指定一个函数,该函数将被应用于每个元素,根据返回的结果进行排序。默认值为 None,表示按
    照元素的原始值进行排序。

Lambda 函数:

def add(a, b): # 普通函数return a+b
print(add(2,3))add = lambda a, b: a + b # 匿名函数
print(add(2,3))
  • 你会发现 : 好像 lambda 就是省略了一个函数名,省略了一个 return 的关键词单词,然后把 def 替换为 lambda,再把函数的 () 前后两个括号去掉,把两行代码改为一行~~~

Demo 示例:

# 一维整数列表,把所有奇数都放到前面,偶数都放到后面
list1 = [19, 32, 76, 82, 23, 63, 38, 50, 20, 30, 39, 14, 19, 50, 81, 27, 77, 12, 55, 29]
a = sorted(list1, key=lambda x: x%2 == 0)
print(a)

如果上面的 lambda 函数 改为常规的写法 则是如下:

list1 = [19, 32, 76, 82, 23, 63, 38, 50, 20, 30, 39, 14, 19, 50, 81, 27, 77, 12, 55, 29]
def demo(x):return x % 2 == 0
a = sorted(list1,key=demo)
print(a)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试系列】后端开发工程师 高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

游戏心理学Day28

独立游戏团队架构 独立游戏工作室是一个包括编程美术设计院校项目管理和运营等各种职能的团队找到可以共同奋斗。数月甚至数年的合适人选并不是一件容易的事情。游戏开发过程中要涉及多种常规工作。小团队的每个成员通常都要身兼数职,而且有些角色常由多人担任。 …

页分裂和页合并——Java全栈知识(33)

上篇文章我们讲到了 MySQL 的数据页,我们说到了 InnoDB 的索引是以 B树的形式构建的,而且 B树的节点都是一个数据页。 但是 B树在使用过程中难免会有节点分裂和节点合并的过程。 因为我们是以数据页为基本单位构造的 B树,那么 B树的节点分裂和…

AutoCAD笔记

基础知识 基本问题 Q&A: Q:菜单栏不见了 A:输入命令MENUBAR,值改为1,或者点击 “顶部的下三角-显示菜单栏”即可 Q:做好了图框,怎么让每次都是用这个图框 A:打开你做好的图框,另存为“图…

真正的IDEA在线版有多好用

前言 在上一篇文章使用过TitanIDE的VS Code在线版以后,尝到了不少甜头,紧接着又去使用了他的在线版IntelliJ IDEA,同样非常惊艳,不需要任何时间去适应这款云原生开发工具,事不宜迟,马上开整 这才是真正的VS Code在线版…

Qt | windows Qt6.5.3安卓环境搭建成功版(保姆级教程)

01、第一章 Qt6.5.3安装 资源 Qt 国内下载地址清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/qt/archive/online_installers/Qt 阿里云盘下载Qt 安卓开发https://www.alipan.com/s/kNaues6CHaG点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极…

锂电池的串并联特性

1节锂电池电芯的规格是10000mah,4v(总能量10000*4) 那么3节电芯串联电池的规格是10000mah,12v(总能量10000*12)注意,这里电池的规格不是30000mah 3节电芯并联的规格是30000mah,4v …

【Linux进阶】windows和linux文件互传的两种方式

前言 我们在windows电脑上使用ssh工具(比如Xshell)来远程登录并使用linux云服务器的时候,难免要将我们的文件传输到linux服务器上,或者将linux服务器的文件传输到我们的windows电脑里,那么,我们要怎么来实…

Reflector简介-archlinux更新镜像列表工具

Reflector 是一个用于 Arch Linux 的 Python 脚本,它能够自动从 Arch Linux 的镜像状态页面获取最新的镜像列表,并根据速度、国家和最后更新时间等因素对镜像进行排序和筛选。用户可以根据自己的需求选择不同的参数来定制镜像列表,并将结果写…

Springboot Mybatis 多数据源配置以及使用

在Spring Boot中配置MyBatis的多数据源是一个常见需求,尤其是在需要连接多个数据库时,下面是详细的步骤指南。 引入依赖 首先,在你的pom.xml文件中添加Spring Boot、MyBatis和数据库连接的相关依赖。例如,如果你使用的是MySQL数…

Java集合实例

一、什么是Java集合实例: 指的是在 Java 程序中创建和使用的集合对象,这些对象用于存储和操作数据。Java 集合框架提供了一系列的接口和实现类,用于管理不同类型的数据集合。 二、Java集合的主要实例类型: 1. List(列…

激光与相机融合标定汇总:提升融合算法的精度与可靠性(附github地址)

前言 随着科技的飞速发展,激光技术与相机技术的融合已成为推动智能化影像发展的重要力量。这种融合不仅提高了成像的精度和效率,还为相关行业带来了革命性的变革。在这篇博客中,我们将深入探讨激光与相机融合标定的原理及其在各个领域的应用…

软件设计师笔记-系统开发和运行知识(三)

软件质量保证 软件质量保证(SQA)是确保软件开发和维护活动遵循预定计划、标准和规程的过程。在软件质量保证中,应用技术方法、进行正式的技术评审、测试软件、实施标准、控制变更、度量、记录保存和报告都是关键的活动。以下是对这些活动的详…

蒙特卡洛法求定积分方

对于连续函数密度函数,求某一个区间的概率时,理论上通过积分获取, 以求曲线围成的面积为例 当我们在[a,b]之间随机取一点x时,它对应的函数值就是f(x)。接下来我们就可以用f(x)*(b-a)来粗略估计曲线下方的面积,也就是我…

Logback-打印方法名及代码行号

背景 公司产品使用了logback作为日志输出框架,日志输出的pattern里配置了打印调用方法名及代码行号的配置,但是实际输出的日志方法名总是显示? 在强迫症的驱使下,开启了探秘之旅 Logback版本 1.2.3 项目中Logging.pattern配置如下&#xff1…

Flutter循序渐进==>与基金mysql数据库交互

导言 债基基金的注意事项,别看收益不高,注意事项可真不少。最近买了CS一支基金,三周时间就亏掉两三个点(水平全网最差、赎回费和管理费全网最高)。就是冲着它的历史成绩去的,突然发现已经换了基金经理&…

解决Linux系统Root不能远程SSH登录

问题描述 在使用Linux主机或者开发板的时候远程SSH一直登录不上Root账户,只能登录其他账户。 问题解决 使用文本编辑器修改SSH的配置文件sshd_config。这个文件通常位于/etc/ssh/目录下。 sudo nano /etc/ssh/sshd_config在sshd_config文件中,找到Pe…

【PHP项目实战训练】——后台-RBAC权限管理原理

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

Postman中Pre-request Script的编写与应用实践

Postman是一款强大的API开发和测试工具,它提供了丰富的功能来简化API的开发和测试工作。其中,Pre-request Script是一个在请求发送之前执行的脚本,它允许用户对请求进行自定义处理,如修改请求头、构造请求参数、设置环境变量等。本…

awk的用法

目录 awk简述 awk的用法 选项 内置变量 命令格式 打印行号 打印指定行 打印奇偶行 按行取列 BEGIN打印模式 乘法计算 awk -v 变量赋值 awk的条件判断 面试题awk的三元表达式 awk的精确筛选 逻辑且、或关系 awk做小数运算 curl 练习 1.获取其中的所有子域名…