news 2026/7/27 19:31:23

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.addlambda 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/7/26 10:30:57

AI时代的设计师:专业化vs.泛化

也许这篇文章会像我们在过去几年中看到的行业中所有变化一样迅速过时。但即使我冒着这个风险,我觉得我需要写一些关于我在与数字产品合作的设计师中看到越来越多的传播的感觉:职业身份危机。 随着LLM在全球范围向所有受众普及,人工智能已经不…

作者头像 李华
网站建设 2026/7/20 1:24:04

机器视觉工程师职位深度解析与面试指南

南京大树智能科技股份有限公司 机器视觉工程师 职位信息 岗位职责: 1、从事机器视觉类检测产品的部分的现场安装、调试、客户培训及售后服务工作; 2、参与部分产品设计工作,并能对生产过程中出现的问题进行指导; 3、对工作富有思考,能够结合产品调试向设计师提出产品质量反…

作者头像 李华
网站建设 2026/7/25 14:15:43

EasyX:从入门到入土

◆博主名称:少司府 欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆ ⭐数据结构系列个人专栏: 初阶数据结构_少司府的博客-CSDN博客 ⭐编程基础训练系列个人专栏: 编程基础50题_少司府的博客-CSDN博客 ⭐那些看…

作者头像 李华
网站建设 2026/7/22 10:33:35

viepress:vue组件展示和源码功能

VitePress实战:vue组件展示和源码功能 一、项目结构与基础配置 1.1 侧边栏配置(sidebar.ts) // docs/.vitepress/sidebar.ts export default {/example/: [{text: Examples,items: [{ text: Markdown Examples, link: /example/markdown }…

作者头像 李华
网站建设 2026/7/23 1:05:37

基于Spring Boot的躲猫猫书店管理系统

目录 摘要 演示视频 系统功能实现 代码实现 推荐项目 项目案例 项目开发总结 为什么选择我 源码获取 博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于…

作者头像 李华
网站建设 2026/7/21 14:43:00

基于Spring Boot的校园闲置物品交易系统

🍅 作者主页:Selina .a 🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…

作者头像 李华