Python operator模块这么用,效率杠杠的!

目录

1、基础操作符应用 🐍

1.1 加载operator模块

1.2 使用itemgetter进行排序

1.3 attrgetter与方法调用

2、高级功能探索 🔍

2.1 methodcaller的妙用

2.2 操作符重载与定制

3、结合lambda表达式 ✨

3.1 lambda与operator模块协同工作

3.2 实战案例分析

4、结合functools.partial定制函数 🛠️

4.1 functools.partial用法

4.2 与operator模块的完美搭配

5、利用operator实现数学运算 ✏️

5.1 常见数学运算符

5.2 运算符重载实例

6、比较操作符的应用 📏

6.1 比较操作符一览

6.2 多对象比较示例

7、总结与拓展 🚀



1、基础操作符应用 🐍

1.1 加载operator模块

在Python中,operator模块提供了对标准操作符函数的访问,使得这些操作符可以作为函数来使用。要开始使用operator模块,首先需要通过import语句将其引入到你的程序中。下面是一个简单的例子 ,展示了如何加载并使用add函数进行两个数的加法运算。

import operator# 使用operator.add执行加法
result = operator.add(5, 3)
print(result)  # 输出: 8

1.2 使用itemgetter进行排序

itemgetter函数是operator模块中一个非常实用的工具,它用于获取对象的某个字段或属性作为排序的关键依据。这在处理列表排序时特别有用,尤其是当你需要根据对象的多个属性进行排序时。以下是一个应用itemgetter对列表按指定属性排序的例子:

from operator import itemgetterdata = [('Alice', 25), ('Bob', 22), ('Charlie', 30)]
# 按照年龄排序
sorted_data = sorted(data, key=itemgetter(1))
print(sorted_data)  
# 输出: [('Bob', 22), ('Alice', 25), ('Charlie', 30)]

1.3 attrgetter与方法调用

itemgetter类似 ,attrgetter允许你根据对象的属性进行排序或访问。这对于自定义类的对象排序尤其有效。此外,attrgetter还能调用无参数的方法。下面的例子展示了如何使用attrgetter来根据对象的属性进行排序以及调用方法:

class Person:
def__init__(self, name, age):
        self.name = name
        self.age = agedefget_age(self):
return self.agep1 =Person('Tom',32)
p2 =Person('Jerry',28)people =[p1, p2]from operator import attrgetter# 按照age属性排序
sorted_people =sorted(people, key=attrgetter('age'))
print([person.name for person in sorted_people])
# 输出: ['Jerry', 'Tom']# 调用get_age方法进行排序
sorted_by_age_method =sorted(people, key=attrgetter('get_age'))
print([person.name for person in sorted_by_age_method])
# 输出: ['Jerry', 'Tom']

通过以上三个部分的介绍 ,我们深入探讨了operator模块的基础应用,从简单地加载模块到利用itemgetterattrgetter进行复杂的数据排序和属性访问。掌握这些技巧 ,能让你在处理数据时更加高效灵活。

2、高级功能探索 🔍

2.1 methodcaller的妙用

methodcaller函数是operator模块中的另一个强大工具,它允许你调用对象的方法,同时传递给该方法所需的参数。这对于在列表推导式、map()函数或者filter()函数中调用对象的方法尤其有用,因为你无需实例化对象即可直接调用其方法。下面的例子展示如何使用methodcaller

class Circle:
def__init__(self, radius):
        self.radius = radiusdefarea(self):
return3.14*(self.radius **2)# 创建Circle对象列表
circles =[Circle(5),Circle(3),Circle(7)]from operator import methodcaller# 使用methodcaller计算每个圆的面积
areas =list(map(methodcaller('area'), circles))
print(areas)  # 输出: [78.5, 28.26, 153.86]

2.2 操作符重载与定制

Python的灵活性允许你在自定义类中重载操作符,从而实现对这些操作符的定制使用。通过定义特定的魔术方法(如__add____sub____mul__等),你可以控制当使用这些操作符时的行为。这不仅增强了代码的可读性,也使你的类能够更自然地融入Python的语法结构中。以下是一个简单的例子,演示了如何在自定义类中重载加法操作符:

class Vector:
def__init__(self, x, y):
        self.x = x
        self.y = ydef__add__(self, other):
returnVector(self.x + other.x, self.y + other.y)# 创建Vector对象
v1 =Vector(1,2)
v2

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

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

相关文章

【Spring Boot 事务管理】

Spring Boot 事务管理 一、Spring Boot中的事务管理1.声明式事务管理Transactional注解基本使用配置选项 2.编程式事务管理TransactionTemplatePlatformTransactionManager 二、Transactional注解深入1.基本使用基本属性 2.传播行为3.隔离级别4.事务超时设置5.回滚规则 三、事务…

如何保护磁盘数据?电脑磁盘数据怎么保护?

电脑磁盘是存储数据的基础,可以将各种重要数据保存在其中。为了避免数据泄露,我们需要保护磁盘数据。那么,电脑磁盘数据怎么保护呢?下面我们就一起来了解一下吧。 文件夹加密超级大师 文件夹加密超级大师是一款优秀的电脑数据加密…

人工智能 (AI) 基本概念 入门篇【C#】版

1. 什么是人工智能? 人工智能(Artificial Intelligence, AI)是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别、决策和语言翻译等。AI的核心是通过算法和数据进行学习和推理,以实现智能行为。 2.…

说说MQ在你项目中的应用(二)商品支付

看了不少关于MQ的文章,也对MQ的作用做了一些总结。通常来说MQ有三大功能:异步处理、系统解耦和流量削峰。但我觉得这些功能本质上都是围绕着异步这个核心来的,只是针对不同的业务场景做了些调整。 现在市面上常用的MQ中间件,如Ra…

每天一个数据分析题(三百九十八)- 逻辑回归

逻辑回归的输出概率在[0,1]的范围内,逻辑回归使用以下哪个函数来实现概率转换? A. Sigmoid B. 求模 C. 平方 D. 几率单位 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Pyth…

力扣爆刷第154天之TOP100五连刷36-40(最长公共子序列、二分、二叉树右视图)

力扣爆刷第154天之TOP100五连刷36-40(最长公共子序列、二分、二叉树右视图) 文章目录 力扣爆刷第154天之TOP100五连刷36-40(最长公共子序列、二分、二叉树右视图)一、1143. 最长公共子序列二、94. 二叉树的中序遍历三、82. 删除排…

如何查看端口是否开放

如何查看端口是否开放 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在网络通信中,端口的开放状态对于应用程序的正常运行至关重要。本文将详细介绍…

Redis 7.x 系列【12】数据类型之基数统计(HyperLogLog)

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 PFADD2.2 PFCOUNT2.3 PFMERGE 3. 应用场景 1. 概述 基数表示数…

static关键字在Java中的作用

static关键字在Java中的作用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的static关键字及其作用。static是Java中一个非常重要的关…

关于 Qt4Qt5迁移至Qt6出现QDesktopWidget和QApplication::desktop()删除后兼容Qt6 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140036861 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

【QT】QTableView使用

目录 QTableView是什么QTableView、QStandardItemModel、QStyledItemDelegate区别QTableViewQStandardItemModelQStyledItemDelegate总结 example参考文章 QTableView是什么 QTableView是Qt框架中用于显示和编辑二维表格数据的类。它提供了一个可视化的表格界面,允许…

个人品牌建设:提升职业发展的关键

引言 在当今竞争激烈的职场环境中,拥有强大的个人品牌已经成为职业成功的重要因素。个人品牌不仅可以帮助你在职场中脱颖而出,还能提升你的职业发展机会和个人影响力。本文将详细探讨如何通过系统的方法和策略,构建和提升个人品牌&#xff0…

MySQL存储过程和函数(超详细)

MySQL存储过程和函数 一、什么是存储过程 存储过程就是一些SQL语句的集合,可以简单理解为类似Java中的一个接口函数,函数里面可以使用查询SQL、流程控制语句、定义参数、条件等,用来实现更复杂逻辑的处理。 二、存储过程的作用(…

【期末速成】计算机操作系统 EP04 | 学习笔记

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️2.1 考点七:进程通信2.2 考点八:线程的概念2.3 考点九:处理机调度的概念及原则2.4 考点十:调度方式与调度算法 一、前言🚀…

常见的行为型设计模式

设计模式(三) 常见的行为型模式 1.模板方法模式: 模版模式定义了一个操作的整体流程, 子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 假设我们有一个制作饮料的算法框架,这个算法包括以下步骤: 烧水泡制饮料(如…

react+customize-cra使用less+less-loader时,可能遇到的问题及解决办法

目录 1、先附上各依赖版本和config-overrides.js配置代码,按这个版本和配置就没问题 2、问题(注意:问题顺序没有先后之分哦) 2.1、TypeError: Cannot read property tap of undefined 2.2、No module factory available for d…

资金常见业务

资金业务在银行运营中扮演着举足轻重的角色,不仅是重要的资金运用渠道,也是银行资金来源的重要一环。除了通过贷款获取收益外,银行还通过多元化的资金业务实现资金的增值。 资金业务按其性质可以分为多个类别,包括长短期资金业务、…

阐述Python:except的用法和作用?

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

网络配置(IP、NETMASK、GATEWAY、DNS、DHCP) <持续更新中>

参考: 初学Linux之网络配置(IP、NETMASK、GATEWAY、DNS、DHCP)-CSDN博客【学习笔记】网关 & 路由_网关和路由-CSDN博客【学习笔记】计算机网络 IP地址与MAC地址_根据mac分配ip-CSDN博客【学习笔记】TCP 和 UDP 协议_tcp 发送 syn 应答没有syn ack-CSDN博客 一…

一次进程虚拟内存占用超过200G问题分析

在对智驾软件系统资源进行分析时,发现一个进程虚存占用过高,超过200G top查看内存占用 有一个node应用占用了200G的虚拟内存 pmap查看该进程内存情况 pmap -x -p 8496结果显示有两个异常点,刚好和虚存使用总量吻合 一个50G和一个170G的堆…