Python 中 4 个高效的技巧!

news2024/12/25 22:35:06

今天我想和大家分享 4 个省时的 Python 技巧,可以节省 10~20% 的 Python 执行时间。

反转列表

Python 中通常有两种反转列表的方法:切片或 reverse() 函数调用。这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。

但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子:

使用切片:

$ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist[::-1]'
1000000 loops, best of 5: 15.6 usec per loop

使用 reverse():

$ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist.reverse()'
1000000 loops, best of 5: 10.7 usec per loop

这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。

显然,内置函数 reverse() 比列表切片方法更快!

交换两个值

用一行代码交换两个变量值是一种更具有 Python 风格的方法。

与其他编程语言不同,Python 不需要使用临时变量来交换两个数字或值。举个简单的例子:

variable_1 = 100 
variable_2 = 500

要交换 variable_1 和 variable_2 的值,只需要一行代码。

variable_1, variable_2 = variable_2, variable_1

您也可以对字典使用相同的技巧:

md[key_2], md[key_1] = md[key_1], md[key_2]

该技巧可以避免多次迭代和复杂的数据转换,从而减少执行时间。

在函数内部循环

我们都喜欢创建自定义函数来执行我们自己的特定任务。然后使用 for 循环遍历这些函数,多次重复该任务。

但是,在 for 循环中使用函数需要更长的执行时间,因为每次迭代都会调用该函数。

相反,如果在函数内部实现了 for 循环,则该函数只会被调用一次。

为了更清楚地解释,让我们举个例子!

首先创建一个简单的字符串列表:

list_of_strings = ['apple','orange','banana','pineapple','grape']

创建两个函数,函数内部和外部都有 for 循环,从简单的开始。

def only_function(x):
    new_string = x.capitalize()
    out_putstring = x + " " + new_string
    print(output_string)

和一个带有循环的 for 函数:

def for_in_function(listofstrings):
    for x in list_of_strings:
        new_string = x.capitalize()
        output_string = x + " " + new_string
        print(output_string)

显然,这两个函数的输出是一样的。

然后,让我们比较一下,哪个更快?
在这里插入图片描述
如您所见,在函数内使用 for 循环会稍微快一些。

减少函数调用次数

判断对象的类型时,使用 isinstance() 最好,其次是对象类型标识 id(),对象值 type() 最后。

# Check if num an int type
type(num) == type(0) # Three function calls
type(num) is type(0) # Two function calls
isinstance(num,(int)) # One function call

不要将重复操作的内容作为参数放在循环条件中,避免重复操作。

# Each loop the len(a) will be called
while i < len(a):
    statement
# Only execute len(a) once
m = len(a)
while i < m:
    statement

要在模块 X 中使用函数或对象 Y,请直接使用 from X import Y 而不是 import X; then X.Y。这减少了使用 Y 时的一次查找(解释器不必先查找 X 模块,然后在 X 模块的字典中查找 Y)。

总而言之,你可以大量使用 Python 的内置函数。提高 Python 程序的速度,同时保持代码简洁易懂。

如果想进一步了解 Python 的内置函数,可以参考下表,或查看以下网站(https://docs.python.org/3/library/functions.html):
在这里插入图片描述

学习资源推荐

上面都是一些软技能的干货分享,希望可以帮到正在入门学习 Python 的小伙伴们,下面是整理好的一些资料分享。
朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

最近面了12个人,发现这个测试基础题都答不上来...

一般面试我都会问一两道很基础的题目&#xff0c;来考察候选人的“地基”是否扎实&#xff0c;有些是操作系统层面的&#xff0c;有些是 python语言方面的&#xff0c;还有些… 深耕IT行业多年&#xff0c;我们发现&#xff0c;对于一个程序员而言&#xff0c;能去到一线互联网…

托管海外服务器有哪些要求?

对于成长中的企业来说&#xff0c;需要使用自己的Web 服务器来有效地控制网站运营安全以及关键数据管理。但与此同时&#xff0c;创建一个高效的数据中心需要巨大的基础设施成本&#xff0c;24小时现场经验丰富的技术和管理支持团队来管理所有数据中心需求、服务器和数据等等。…

详细介绍NLP关键词提取算法

PageRank 算法 基于词图模型的关键词提取算法主要有 PageRank 和 TextRank。 PageRank 是 TextRank 算法的思想基础&#xff0c;TextRank 是 PageRank 在文本上的应用。 来源&#xff1a; Google 创始人拉里佩奇和谢尔盖布林于 1997 年构建早期的搜索系统原型时提出的链接分析…

uniCloud云开发及一键生成代码

uniapp云开发&#xff08;云数据库&#xff09; 准备工作 一、新建项目选择云开发 关联云函数 在cloudfouctions右键点击创建云函数 在base下的index.js中写入 use strict; exports.main async (event, context) > {//event为客户端上传的参数console.log(event : , ev…

PyG (PyTorch Geometric) 异质图神经网络HGNN

诸神缄默不语-个人CSDN博文目录 PyTorch Geometric (PyG) 包文档与官方代码示例学习笔记&#xff08;持续更新ing…&#xff09; 本文介绍使用PyG实现异质图神经网络&#xff08;HGNN&#xff09;的相关操作。 本文主要参考PyG文档异质图部分&#xff1a;Heterogeneous Graph…

Matplotlib可视化50图:气泡图(2)

导读 本文[1]将学习如何使用 Python 的 Matplotlib 库通过示例绘制气泡图。 简介 气泡图是散点图的改进版本。在散点图中&#xff0c;有两个维度 x 和 y。在气泡图中&#xff0c;存在三个维度 x、y 和 z。其中第三维 z 表示权重。这样&#xff0c;气泡图比二维散点图在视觉上提…

C语言 编译和链接

C语言 编译和链接引言翻译环境运行环境声明一、预定义符号二、#define 符号1. #define 定义标识符2. #define 定义宏宏带来的陷阱宏的两个特殊的使用场景① 使用 #&#xff0c;把一个宏参数变成对应的字符串② 使用 ##&#xff0c;将两个宏参数合并成一个符号宏参数的使用3. #d…

某度旋转验证码

案例地址:aHR0cHM6Ly96aXl1YW4uYmFpZHUuY29tL2xpbmtzdWJtaXQvdXJs 运行结果截图: 抓包分析, 整个流程如下 第一个包,提交参数是ak和时间戳(ak是定值) 返回的参数中,as和tk后面都会用到 点击提交,会弹出验证码,第二个包,请求参数的tk是第一个包返回的, ak同第一…

总算给女盆友讲明白了,如何使用stream流的filter()操作

一、引言 在上一篇文章中《这么简单&#xff0c;还不会使用java8 stream流的map()方法吗&#xff1f;》分享了使用stream的map()方法&#xff0c;不知道小伙伴还有印象吗&#xff0c;先来回顾下要点&#xff0c;map()方法是把一个流中的元素T转换为另外一个新流中的元素R&…

身边的那些信审人员都去哪了?

最近几天看到朋友圈很多信用卡审核中心的老同事&#xff08;老同学&#xff09;在秀到深圳9周年&#xff0c;在2013年的时候&#xff0c;大家都是一起通过校招来到了XX银行信用卡中心的信贷审批部&#xff0c;成为了信用卡人工审核员&#xff0c;那时候入职信贷审批部近百人&am…

这个算法不一般,控制拥塞有一手!

数字时代下&#xff0c;远程办公、线上协同成为刚需&#xff0c;直播带货等业务模式盛行&#xff0c;数据流量爆炸式增长&#xff0c;低时延、高流畅的网络传输诉求给数据中心的处理能力带来了极大挑战。RDMA作为一种新型网络传输技术&#xff0c;可大幅提升网络传输实效&#…

HTML期末学生大作业-节日网页作业html+css+javascript

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

详细总结快慢指针的在链表中的常见题型

常见快慢指针题型1.找出链表中间结点2.找到倒数第K个结点3.判断环形链表4.找到环形链表的入口&#xff08;进阶&#xff09;5.相交链表1.找出链表中间结点 双指针进阶解法 1.定义两个指针&#xff0c;一个快指针&#xff0c;一个慢指针。 2.快指着一次走两步&#xff0c;慢指针…

基于冲突搜索的多机器人路径规划(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 随着自动化物流系统的发展,移动机器人作为运输系统的关键工具,各方面的技术得到了快速的发展。多移动机器人路径规划是机器人导…

什么是单臂路由技术?

使用vlan trunk可以在同一交换机上划分vlan&#xff0c;从而相同vlan的主机可以通信&#xff0c;不同vlan不能通信&#xff0c;如果连接不同vlan的主机想要通信&#xff0c;怎么办&#xff1f; 不同vlan是属于不同广播域的&#xff0c;配置的是不同的IP网段&#xff0c;针对不…

Notepad++官网地址及使用十六进制查看文件的详细教程

目录 一、概述 二、Notepad官网地址 三、Notepad查看十六进制教程  3.1 在线安装HexEditor插件  3.2 手动安装HexEditor插件 一、概述 Notepad是一个开源的源代码编辑器和记事本替代品&#xff0c;支持多种编程语言和自然语言。在MS Windows环境下运行&#xff0c;它的使用受…

在线数据图表制作-FineReport文本控件

1. 概述 1.1 版本 报表服务器版本 App 版本 功能变更 11.0 -- -- 11.0.2 11.0.54 App支持文本控件 NFC 读卡输入 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件输入文本信息&#xff0c;录入填报的数据&#xff0c;如下图所示&#xff1a; 1.2.2 参数控件 …

51单片机APP GSM短信老人跌倒定位温度异常报警检测GPS地图

实践制作DIY- GC0088-跌倒定位温度异常报警 一、功能说明&#xff1a; 基于STM32单片机设计-跌倒定位温度异常报警 功能介绍&#xff1a; STC15W4K48S4&#xff08;或者STM32F103CxT6&#xff09;系列最小系统板OLED显示器SIM800 GSM短信模块1个DS18B20温度测量模块蜂鸣器AD…

我的世界杯 - 诸神黄昏之战

话说长这么大还是头一回主动的去看世界杯比赛... 小时候只是我爷爷他们喜欢看 【CCTV-5】 各种球的比赛&#xff0c;而我我对此毫无兴趣可言&#xff0c;每天只要有时间就沉醉在属于我的 【少儿频道】&#xff0c;喜羊羊、葫芦娃、红猫蓝兔、小娜扎... 而这次可能是因为朋友圈的…

Spring【Bean的作用域与生命周期】

Spring【Bean的作用域与生命周期】&#x1f34e;一.Bean作用域问题&#x1f352;1.1 被修改的 Bean 案例&#x1f352;1.2 原因分析&#x1f34e;二.作⽤域定义&#x1f352;2.1Bean 的 6 种作⽤域&#x1f349; 2.1.1singleton(单例作⽤域)&#x1f349; 2.1.2prototype(原型作…