news 2026/10/6 12:34:12

Python3 operator模块高效使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python3 operator模块高效使用指南

Python3 operator模块全面学习教程

一、模块概述

operator模块为Python的内置运算符提供了函数式接口。它包含与比较运算、逻辑运算、数学运算等对应的函数,可替代lambda表达式,提升代码可读性和执行效率。

二、常用函数分类
1. 算术运算
import operator as op print(op.add(3, 5)) # 8 → 加法 print(op.sub(10, 4)) # 6 → 减法 print(op.mul(2, 6)) # 12 → 乘法 print(op.truediv(9, 3)) # 3.0 → 真除法 print(op.floordiv(7, 2)) # 3 → 取整除法 print(op.mod(13, 5)) # 3 → 取模 print(op.pow(2, 4)) # 16 → 幂运算
2. 比较运算
data = [('Alice', 25), ('Bob', 20), ('Charlie', 30)] sorted_data = sorted(data, key=op.itemgetter(1)) # 按年龄升序排序 print(op.eq(10, 10)) # True → 等于 print(op.ne(7, 3)) # True → 不等于 print(op.lt(5, 8)) # True → 小于 print(op.le(6, 6)) # True → 小于等于
3. 逻辑运算
print(op.not_(True)) # False → 逻辑非 print(op.and_(True, False)) # False → 逻辑与 print(op.or_(False, True)) # True → 逻辑或
4. 序列操作
my_list = [1, 2, 3, 4] print(op.concat([1,2], [3,4])) # [1,2,3,4] → 序列连接 print(op.contains([10,20], 20)) # True → 包含检测 print(op.countOf([5,5,5], 5)) # 3 → 计数
三、高阶函数应用
1.itemgetter对象
get_second = op.itemgetter(1) # 获取序列第二个元素 print(get_second(['a','b','c'])) # 'b' # 多级排序示例 students = [('Bob', 'B', 15), ('Alice', 'A', 20), ('Chris', 'B', 18)] sorted_students = sorted(students, key=op.itemgetter(1, 2))
2.attrgetter对象
class Person: def __init__(self, name, age): self.name = name self.age = age people = [Person('Tom', 30), Person('Jerry', 25)] get_age = op.attrgetter('age') # 获取age属性 print([get_age(p) for p in people]) # [30, 25]
3. 函数式编程
from functools import reduce result = reduce(op.add, [1,2,3,4]) # 等效于 sum([1,2,3,4]) print(result) # 10

http://my.tv.sohu.com/us/441191809/699557154.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzE1NC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557159.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzE1OS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557321.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzMyMS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557097.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzA5Ny5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557174.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzE3NC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557406.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzQwNi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557283.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzI4My5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557345.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzM0NS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557289.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzI4OS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557193.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzE5My5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557429.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzQyOS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557436.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzQzNi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557621.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzYyMS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557629.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzYyOS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557454.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzQ1NC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557636.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzYzNi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557533.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzUzMy5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557538.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzUzOC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557400.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzQwMC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557705.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzcwNS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557720.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzcyMC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557560.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzU2MC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557497.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzQ5Ny5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557672.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzY3Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557744.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzc0NC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557752.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzc1Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557574.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzU3NC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557768.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzc2OC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557690.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzY5MC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557833.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzgzMy5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557902.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzkwMi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558012.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODAxMi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558018.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODAxOC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557912.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzkxMi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557857.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzg1Ny5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557862.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzg2Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557868.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzg2OC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557928.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1NzkyOC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558118.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODExOC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557881.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzg4MS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558056.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODA1Ni5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557891.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzg5MS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558140.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODE0MC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558142.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODE0Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558205.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODIwNS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699557969.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1Nzk2OS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558159.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODE1OS5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558163.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODE2My5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558100.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODEwMC5zaHRtbA==.html
http://my.tv.sohu.com/us/441191809/699558234.shtml
https://tv.sohu.com/v/dXMvNDQxMTkxODA5LzY5OTU1ODIzNC5zaHRtbA==.html

四、实用技巧
  1. 替代lambda
    operator.add比lambda x,y: x+y更高效

    # 传统方式 sorted(names, key=lambda x: x[1]) # 优化方式 sorted(names, key=op.itemgetter(1))
  2. 方法调用器

    upper_all = map(op.methodcaller('upper'), ['a','b','c']) print(list(upper_all)) # ['A','B','C']
  3. 自定义运算符

    def vector_add(v1, v2): return tuple(map(op.add, v1, v2)) print(vector_add((1,2), (3,4))) # (4,6)
五、性能优势

在循环密集型操作中,operator模块比等价的lambda表达式快约20%-30%:

import timeit lambda_time = timeit.timeit( 'sorted(data, key=lambda x: x[1])', setup='data=[(i, i%10) for i in range(1000)]', number=1000 ) op_time = timeit.timeit( 'sorted(data, key=op.itemgetter(1))', setup='import operator as op; data=[(i, i%10) for i in range(1000)]', number=1000 ) print(f"Lambda耗时: {lambda_time:.4f}s") print(f"Operator耗时: {op_time:.4f}s")
六、总结

通过operator模块可实现:

  • 更清晰的函数式编程
  • 更高效的序列操作
  • 更优雅的属性/元素访问
  • 更快速的运算执行

建议在涉及大量简单运算的场景中优先使用此模块,但需注意在简单表达式场景中直接使用运算符可能更直观:

# 简单场景 x + y # 优于 operator.add(x, y) # 复杂场景 reduce(op.add, large_list) # 优于 reduce(lambda a,b: a+b, large_list)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 13:27:24

安卓驱动开发工程师:深入技术核心,驱动智能未来

深圳达实智能股份有限公司 安卓驱动开发工程师 职位信息 负责安卓系统底层驱动的设计、开发、调试、集成与性能优化工作。 负责Android Framework及内核等系统框架层的调优,关键模块开发实现及调试定位。 系统API设计和开发,安卓SDK定制和维护。 二、 任职要求: 1. 基础要求…

作者头像 李华
网站建设 2026/10/5 13:27:14

协鑫集成高级AI开发工程师职位深度解析:职责、能力与面试指南

协鑫集成 高级AI开发工程师 职位信息 职位详情: 1.探索、跟踪国内外领先的AI技术、产品方案,推动其在公司内应用,提升企业运营效率,生产效率。 2.协调各部门团队,包括研发、工艺、生产、职能等,确保AI项目目标实现。 3.结合AI背景和行业需求,为企业数字化、智能化提供指…

作者头像 李华
网站建设 2026/10/5 13:27:14

Snapd和Apt—Linux 上两种完全不同的软件包管理系统

Snapd 和 Apt 是 Linux 上两种完全不同的软件包管理系统,各有优劣。以下是详细对比: 核心区别一览 特性Apt (传统)Snapd (现代)设计年代1998年 (Debian)2014年 (Ubuntu)软件包格式.deb.snap依赖处理共享系统库,自动解决依赖自带所有依赖&…

作者头像 李华
网站建设 2026/10/5 13:27:14

ESP32 的宝藏开源项目:ESP32 - Bus - Pirate 打造硬件调试瑞士军刀

大家好,我是杂烩君。当你手里拿着一个ESP32开发板,除了做物联网项目,还能干什么? 可以借助ESP32-Bus-Pirate把ESP32板子变成了一把"瑞士军刀",能够与20多种数字协议和无线协议进行交互。 1. ESP32-Bus-Pir…

作者头像 李华
网站建设 2026/10/5 13:27:14

【ICLR26-加州大学】GEN2SEG:生成模型实现可泛化的实例分割

文章:GEN2SEG: GENERATIVE MODELS ENABLE GENERALIZABLE INSTANCE SEGMENTATION代码:https://reachomk.github.io/gen2seg单位:加州大学戴维斯分校一、问题背景人类仅凭有限经验就能识别各类陌生物体,而传统视觉模型的“零样本迁移…

作者头像 李华
网站建设 2026/10/5 17:54:44

股市估值差异对国际技术标准制定的影响

股市估值差异对国际技术标准制定的影响关键词:股市估值差异、国际技术标准制定、技术创新、市场竞争、产业发展摘要:本文深入探讨了股市估值差异对国际技术标准制定的影响。首先介绍了研究的背景、目的、范围以及预期读者等内容。接着阐述了股市估值差异…

作者头像 李华