日常代码笔记,Python的推导式,性能评估!

Python代码性能评估:time模块精准计时与性能优化实践 在软件开发和性能优化中,准确测量代码执行时间是基础且关键的环节。时间测量原理涉及系统时钟、CPU时间等不同计时方式,其技术价值在于为性能瓶颈分析、算法对比和系统调优提供量化依据。应用场景广泛,包括数据处理脚本优化、算法性能对比、I/O操作诊断等。本文聚焦Python的time模块,深入解析time.time()与time.perf_counter()的核心差异,并通过封装函数、上下文管理器和装饰器等工程实践,展示如何构建可靠的计时工具。文中以pandas读取Excel文件性能异常为案例,演示如何使用高精度计 阅读详情

 

 

 

 

 

Python资源共享群:626017123

写代码跟写作类似,需要不断地练习,不断地阅读,获得灵感,然后反复修改(重构)。写代码有代码补全工具,然后我们还是需要不断地练习、实验自己的新想法。

之前对python的推导式没有仔细去了解,今天抽空练习了下,顺路重构下以前代码里比较耗时的逻辑。以下为正文,分享给大家:

推导式comprehensions(又称解析式)。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 常用的比如列表推导式、字典推导式。

01 

列表推导式

代替for循环处理list,而且速度还快很多。对比下for循环跟[ ]的方式,代码如下: 

import time

 

t1=time.time()

z=[]

for i in range(100000):

if i%2==0:

j=i+3

z.append(j)

t2=time.time()

print(t2-t1)

耗时0.015286922454833984

t1=time.time()

z=[i+3 for i in range(100000) if i%2==0]

t2=time.time()

print(t2-t1)

耗时 0.008960962295532227

除了从耗时上评估性能之外,还可以通过dis模块 获取到对应的 字节码指令 来评估。何为字节码指令? 指的是由一个字节长度的、代表着某种特定含义的数字(操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(操作数,Operands)而构成。

先来用代码实现下:

import dis

 

def f1():

z=[]

for i in range(10000):

if i%2==0:

j=i+3

z.append(j)

def f2():

z=[i+3 for i in range(10000) if i%2==0]

dis.dis(f1)

dis输出的字节码如下:

4 0 BUILD_LIST 0

2 STORE_FAST 0 (z)

 

5 4 SETUP_LOOP 46 (to 52)

6 LOAD_GLOBAL 0 (range)

8 LOAD_CONST 1 (10000)

10 CALL_FUNCTION 1

12 GET_ITER

>> 14 FOR_ITER 34 (to 50)

16 STORE_FAST 1 (i)

 

6 18 LOAD_FAST 1 (i)

20 LOAD_CONST 2 (2)

22 BINARY_MODULO

24 LOAD_CONST 3 (0)

26 COMPARE_OP 2 (==)

28 POP_JUMP_IF_FALSE 14

 

7 30 LOAD_FAST 1 (i)

32 LOAD_CONST 4 (3)

34 BINARY_ADD

36 STORE_FAST 2 (j)

 

8 38 LOAD_FAST 0 (z)

40 LOAD_ATTR 1 (append)

42 LOAD_FAST 2 (j)

44 CALL_FUNCTION 1

46 POP_TOP

48 JUMP_ABSOLUTE 14

>> 50 POP_BLOCK

>> 52 LOAD_CONST 0 (None)

54 RETURN_VALUE

同样,也对列表推导式,输出字节码:

def f2():

z=[i+3 for i in range(10000) if i%2==0]

 

dis.dis(f2)

对比下方的字节码跟上文的f1的字节码长度,f2在操作步骤上就少很多。

10 0 LOAD_CONST 1 (<code object <listcomp> at 0x10bb6c420)

2 LOAD_CONST 2 ('f2.<locals>.<listcomp>')

4 MAKE_FUNCTION 0

6 LOAD_GLOBAL 0 (range)

8 LOAD_CONST 3 (10000)

10 CALL_FUNCTION 1

12 GET_ITER

14 CALL_FUNCTION 1

16 STORE_FAST 0 (z)

18 LOAD_CONST 0 (None)

20 RETURN_VALUE

02

字典推导式

可以方便的用来交换键名与键值,如下:

mix = {'m': 300, 'i': 500,'x':1000}

lab = {v: k for k,v in mix.items()}

print(lab)

# {300:"m",500:"i",1000:"x"}

03

推荐2个在线学习的网站

 

 

 

 

 

 

HackerRank

为程序员们提供一个以编码谜题和现实生活中遇到的编码难题为基础的新兴的社交平台。

5 million developers .

codepen

是一个完全免费的前端代码托管服务,上面有很多特效代码, 也是我常逛的~

 

 

 

 

 

 

Python嵌套列表扁平化:从语法解析到实战应用与性能优化 列表推导式是Python中一种高效、简洁的语法结构,用于快速生成列表。其核心原理是将循环和条件判断压缩到一行代码中,通过特定的语法顺序实现迭代与元素收集。这种语法糖不仅提升了代码的编写效率,还因其在解释器层面的优化,往往能带来更好的性能表现。在数据处理、Web开发和自动化脚本等场景中,列表推导式常用于数据转换、过滤和聚合操作。当处理嵌套数据结构时,如二维列表或JSON中的多层数组,嵌套列表推导式(例如`[a for b in c for a in b]`)成为实现**列表扁平化**的关键技术。本文深入探讨了 阅读详情

相关推荐

Python实现分类模型性能评估指标

F1值是精确率和召回率的调和平均数,它同时考虑了精确率和召回率的性能表现,因此是一个综合性评价指标。精确率定义为所有被正确预测为正类别的样本占所有预测为正类别的样本的比例。精确率用来衡量分类器对负样本的区分能力,通常用于当我们想要确保预测结果为正类别时,该结果真的是正类别的情况下。准确率是一个分类模型最常见的性能评估指标,它衡量模型正确预测的样本占总样本数的比例。这个指标简单易懂,但有时候会欺骗人们的眼睛,因为当数据集中存在类别不平衡问题的时候,高准确率并不一定代表好的分类器。

2301_78484069的博客 694

Python_Day5_性能优化&推导式

循环代码优化 遵循原则 减少内部循环 减少内部循环计算量,可以尽可能向外提 使用局部变量,查询较快 import time #时间0.23 start = time.time() for i in range (1000): result = [] for j in range(1000): result.append(i*1000 + j*1000) end = time.time() print("耗时:{0}".format((end-start))) #内部循环外

weixin_43945111的博客 395

38、高效利用Python数据结构优化代码性能

本文深入探讨了如何高效利用Python中的各种数据结构来优化代码性能。从基础的列表、元组、字典和集合到高级的链表、树与图结构,文章详细介绍了它们的应用场景及常见操作陷阱,并提供了实用的优化方法和最佳实践。此外,还特别介绍了Trie树在文本处理与分析中的应用,帮助开发者编写更高效、可扩展且易于维护的Python代码。

rice5的博客 135

日常代码笔记,python的推导式&性能评估

写代码跟写作类似,需要不断地练习,不断地阅读,获得灵感,然后反复修改(重构)。写代码有代码补全工具,然后我们还是需要不断地练习、实验自己的新想法。之前对python的推导...

shadowcz007的博客 254

Python-SumEval一个Python实现文本摘要评估框架

SumEval一个Python实现文本摘要评估框架

台达B3伺服电机485通讯的调试过程

最近上了一项目,没办法直接把B3伺服接到PLC上去,怎么办?偶说试下直接电脑通过100多米的485线控制好了,定型前的测试就这样展开了。 1、焊CN1口 如果不安装CN1,是开不了机的,要报很多错误,比如SERV EMG ALERT, 上限报警,下限报警什么的,怎么办?直接焊好CN1头子吧,烦了点,但是必要的。 主要接的是11,9,10,32,31,30几个脚,按照图上连接好就是了。 2、 接线路 按照上面的图,接上伺服电机线,编码器线,电源线,包括限位常闭开关、485连线等,就完..

shidong01的博客 1万+

关于python条件推导式与filter的性能比较

目录 一、前言 二、代码 三、结果 四、另一个样例 五、结论 一、前言 最近在项目中应用python的推导式比较多,主要是考虑到推导式很简洁,且可读性高,所以没有用filter。有空了忽然想比较分析一下python推导式和filter性能的比较。最终结果让我还挺开心,看来用推导式路子选对了(虽然这点效率提升可忽略不计)。后文也抛出了一个疑问,希望能一起探讨。 二、代码 import datetime # 生成一千万的列表用于测试 testList = [x for x ..

幻欢子 1125

卡尔曼滤波五步拆解:用Excel手推姿态解算全过程

本文通过Excel手推演示,详细拆解了卡尔曼滤波在姿态解算中的五步核心流程。文章以融合陀螺仪与加速度计数据估算角度为例,从状态预测、协方差更新到增益计算,逐步展示如何将抽象的矩阵运算转化为可视化的表格计算,帮助读者直观理解滤波器的“预测-修正”机制,并为算法实现与参数调优提供清晰指导。

hhh00的博客 980

深入探索Python中的推导式:从列表到字典,全面解析数据结构的快速构建方法

本文深入探索了Python中的推导式,包括列表推导式、字典推导式、集合推导式和生成器推导式,全面解析了这些数据结构的快速构建方法。通过具体示例展示了如何使用这些推导式简化代码并优化性能,从基础语法到条件筛选的应用,每种推导式都有详细解释和实例演示。文章还特别解释了为何生成器推导式不被称为元组推导式,强调了生成器的惰性求值特性,适合处理大数据集。这些推导式不仅提高了代码的可读性,也为数据处理提供了高效的解决方案。

lph159的博客 911

TI电机驱动应用中MOSFET选型完整指南

深入解析TI电机驱动设计中MOSFET的选型关键,涵盖参数匹配、热性能与开关效率,帮助工程师优化系统性能并提升能效,是掌握MOSFET应用的核心参考。

weixin_42263617的博客 1270

Python实战:5分钟搞定滑动平均窗口计算(附完整代码+逐行注释)

本文深入解析Python中滑动平均窗口计算的实现与优化,提供Numpy、Pandas等多种高效方案,并附完整代码和逐行注释。涵盖边界处理、性能优化及异常检测等实战技巧,帮助开发者快速掌握时间序列数据处理的核心技术。

weixin_30872157的博客 124

python字节码解析_日常代码笔记,python的推导式&性能评估

写代码跟写作类似,需要不断地练习,不断地阅读,获得灵感,然后反复修改(重构)。写代码有代码补全工具,然后我们还是需要不断地练习、实验自己的新想法。之前对python的推导式没有仔细去了解,今天抽空练习了下,顺路重构下以前代码里比较耗时的逻辑。以下为正文,分享给大家:推导式comprehensions(又称解析式)。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。常用的比如列表...

weixin_32537261的博客 179

南邮 2024 软件安全 实验四 自动脱壳+手动脱壳

这次这个实验很简单,就是一个简单的脱壳,然后进行爆破就行了,解法非常的多这里不多讲,会简单讲一下特殊情况这个点开是这样子:然后放进peid里面查看,我这个是原版的PEid,所以显示出来是这样:会显示nothing found,但其实如果你使用吾爱破解的魔改过的peid,它就会显示具体的壳名:然后你点击右下角的那个箭头,里面会有很多的插件用来自动脱壳:你也可以使用这个通用脱壳器,但是脱壳后的程序无法运行,这个放到后面讲。

ARbing_an的博客 2561

Python代码性能评估:time模块核心函数详解与实战应用

在Python开发中,性能评估是优化算法、排查瓶颈的基础环节。其核心原理在于精确测量代码执行时间,这直接关系到程序的效率与资源利用率。从技术价值看,准确的耗时分析能帮助开发者区分CPU密集型与I/O密集型任务,为性能优化提供数据支撑。常见的应用场景包括算法效率对比、线上服务性能监控以及数据处理流程优化。本文聚焦Python标准库中的time模块,深入解析time.time()、time.perf_counter()等核心函数,通过构建计时装饰器与上下文管理器,解决实际开发中的性能评估需求,并自然融入性能优化

weixin_34337381的博客 573

树莓派驱动步进电机

步进电机一般由电机、驱动器构成,树莓派连接驱动器控制电机。 一、接线 DIR+/- 用于控制方向,PUL+/- 用于控制转动; 正极DIR+ 和 PUL+ 接到GPIO口,两个负极接到GPIO口或地线均可,控制的时候不使用。 实验中,DIR+ 接35口,PUL+ 接38口。 树莓派4B GPIO口如图所示 远离树莓派USB的一侧 是 1、2、3号口 二、驱动 DIR控制方向,使用高电平或低电平控制; PUL控制转动,使用脉冲驱动。 三、代码 import RPi.GPI.

weixin_42337765的博客 1万+

论文代码复现 | 无人机与卡车联合配送(Python+Gurobi)(The flying sidekick traveling salesman problem)

无人机配送-代码复现The flying sidekick traveling salesman problem-Part 1文献笔记:(无人机配送-代码复现)The flying sidekick traveling salesman problem-Part 1摘要论文主要图标摘录数值实验算例结果参考文献 文献笔记:(无人机配送-代码复现)The flying sidekick traveling salesman problem-Part 1 摘要 Once limited to the milit

HsinglukLiu的博客 3万+

python append函数_使Python代码的速度提高1000倍

在这篇文章中,我将分享您可能在日常脚本中使用的3种Python效率技术,以及如何度量2种解决方案之间的性能改进。我们开始吧!如何比较两种候选解决方案的性能?入门Python其实很容易,但是我们要去坚持学习,每一天坚持很困难,我相信很多人学了一个星期就放弃了,为什么呢?其实没有好的学习资料给你去学习,你们是很难坚持的,这是小编收集的Python入门学习资料关注,转发,私信小编“01”,即可免费领取!...

weixin_39578516的博客 1027

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3578

别再只用set去重了!Python字符串去重排序的3种实用方法(附性能对比)

本文深入探讨了Python中字符串去重排序的3种高效方法,包括字典键保持顺序法、collections.OrderedDict方法和列表推导式+in检查法,并提供了详细的性能对比和实战建议。针对不同场景和Python版本,推荐最优解决方案,帮助开发者提升代码效率和可读性。

weixin_27298377的博客 228

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python列表反序与推导式:从None陷阱到高效实践

在Python编程中,列表操作是数据处理的基础,而原地修改与返回新对象的设计差异常引发困惑。例如,reverse()方法原地反转列表却返回None,导致误用;列表推导式则提供了一种声明式生成新列表的方式,兼具可读性与性能优势。理解这些机制能帮助开发者避免常见错误,提升代码效率。在数据清洗、变换和过滤等场景中,合理选择reverse()、切片、reversed()或推导式至关重要。本文深入剖析列表反序的陷阱与列表推导式的核心价值,助你掌握Python列表操作的精髓。

weixin_31421613的博客 88

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Python列表过滤的7种姿势:从入门到性能优化全解析

本文全面解析了Python中实现列表过滤的七种核心方法,涵盖从基础的for循环、列表推导式到高效的NumPy布尔索引与内存友好的生成器表达式。文章通过性能对比与实战案例,帮助开发者根据数据规模、内存限制和代码可读性等需求,选择最优的过滤策略,实现从入门到性能优化的全链路提升。

weixin_29204205的博客 219

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python代码示例

通过上述示例,我们可以看到Python在多个领域的灵活性和强大功能。从基础语法到高级应用,Python都能提供简洁的解决方案。未来,随着AI和云计算的普及,Python将继续扮演重要角色,鼓励开发者不断探索和创新。无论是业余爱好者还是专业人士,掌握Python都将为职业生涯增添价值。

gao738508的博客 388

Python代码复杂度分析:从圈复杂度到业务感知的动态评估

代码复杂度是衡量软件可维护性与稳定性的核心指标,涉及圈复杂度、认知复杂度等多维技术概念。其原理源于控制流图分析与认知负荷理论,通过AST解析、节点权重建模和上下文感知计算,将抽象质量属性转化为可量化、可追踪的工程数据。该技术显著提升Code Review效率、降低线上故障率,并支撑重构决策与新人培养。在Python生态中,结合ast标准库、语义规则引擎与Git/IDE集成,能实现轻量、透明、业务适配的实时复杂度评估——这正是本文聚焦的‘Analyzing Complexity of Code through

Eric.Net的专栏 430

别再混淆Python列表推导式和生成器表达式,一文讲透

在Python编程中,推导式是一种简洁高效的序列构造语法,但方括号与圆括号的细微差别,却常常导致隐蔽的运行时错误。列表推导式采用立即求值,完整地在内存中生成列表对象;而生成器表达式则是惰性求值,返回一个可迭代的生成器,仅在被遍历时才按需产出元素。理解二者的内存行为、迭代特性及适用边界,是避免二次遍历为空、json序列化失败等典型问题的关键。本文从基础语法出发,结合真实报错场景,梳理了列表生成、过滤、条件分发等常见写法,并给出了一套可落地的类型排查与选择原则,帮助开发者在数据处理、日志解析、接口对接等工程场景

weixin_34375251的博客 213

python 字符串交集_Python必懂的20个神操作!

读Python 是一个解释型语言,可读性与易用性让它越来越热门。正如 Python 之禅中所述:优美胜于丑陋,明了胜于晦涩。在你的日常编码中,以下技巧可以给你带来意想不到的收获。01、字符串反转下面的代码片段,使用 Python 中 slicing 操作,来实现字符串反转:02、首字母大写下面的代码片段,可以将字符串进行首字母大写,使用的是 String 类的 title() 方法:03、取组成字...

weixin_39709194的博客 1845

python counter_Python必懂的20个神操作!

读Python 是一个解释型语言,可读性与易用性让它越来越热门。正如 Python 之禅中所述:优美胜于丑陋,明了胜于晦涩。在你的日常编码中,以下技巧可以给你带来意想不到的收获。01、字符串反转下面的代码片段,使用 Python 中 slicing 操作,来实现字符串反转:02、首字母大写下面的代码片段,可以将字符串进行首字母大写,使用的是 String 类的 title() 方法:03、取组成字...

weixin_39765339的博客 362
上一篇: Python网络爬虫实战,照片定位与B站弹幕!
下一篇: Python 自然语言处理:轻松上手文本分类!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值