如何让 Python 代码运行得非常快?

在本文中,我解释了一些优化和加速 Python 代码的技巧和窍门。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

Python 是开发人员中最流行的编程语言之一。它无处不在,无论是 Web 开发还是机器学习。

它受欢迎的原因有很多,比如它的社区支持、它令人惊叹的库、它在机器学习和大数据中的广泛使用以及它的简单语法。

尽管有这么多品质,python 有一个缺点,就是 速度慢 。作为一种解释性语言,python 比其他编程语言慢。不过,我们可以使用一些技巧来克服这个问题。

在本文中,我将分享一些 Python 技巧,使用这些技巧可以让我们的 Python 代码运行得比平时更快。让我们开始吧!

1. 合适的算法和数据结构

每个数据结构都对运行时产生重大影响。python中内置了list、tuple、set、dictionary等多种数据结构。大多数人在所有情况下都使用列表数据结构。

在 python 中,集合和字典具有 O(1) 的查找性能,因为它们使用哈希表。在以下情况下,您可以使用集合和字典来代替列表:

  • 集合中没有重复的项目。

  • 您需要在集合中重复搜索项目。

  • 该集合包含大量项目。

你可以在这里看到python中不同数据结构的时间复杂度:

Python Wiki 的时间复杂度

本页记录了当前 CPython 中各种操作的时间复杂度(又名“Big O”或“Big Oh”)。(https://wiki.python.org/moin/TimeComplexity)

2.使用内置函数和库

Python 的内置函数是加快代码速度的最佳方法之一。您必须在需要时使用内置的 python 函数。这些内置函数都经过了很好的测试和优化。

这些内置函数之所以快,是因为python的内置函数,如min、max、all、map等都是用C语言实现的。

您应该使用这些内置函数,而不是编写有助于更快执行代码的手动函数。

例子:

newlist = []

for word in wordlist:
    newlist.append(word.upper())

编写此代码的更好方法是:

newlist = map(str.upper, wordlist) 

这里我们使用的是内置的 map 函数,它是用 C 编写的。因此,它比使用循环要快得多。

3. 使用多个作业

如果要分配多个变量的值,则不要逐行分配它们。Python 有一种优雅且更好的方式来分配多个变量。

例子:

firstName = "John"
lastName = "Henry"
city = "Manchester"

分配这些变量的更好方法是:

firstName, lastName, city = "John", "Henry", "Manchester"

这种变量分配比上面的分配更加简洁和优雅。

4. 更喜欢列表理解而不是循环

列表推导是一种优雅且更好的方法,只需一行代码即可根据现有列表的元素创建新列表。

列表推导被认为比定义一个空列表并向该空列表添加元素更符合 Pythonic 的创建新列表的方式。

列表推导的另一个优点是它比使用 append 方法向 python 列表添加元素要快。

例子:

使用列表追加方法:

newlist = []
for i in range(1, 100):
    if i % 2 == 0:
        newlist.append(i**2)

使用列表理解的更好方法:

newlist = [i**2 for i in range(1, 100) if i%2==0] 

使用列表推导时,代码看起来更干净。

5.正确导入

您应该避免导入不必要的模块和库,除非您需要它们。您可以指定模块名称而不是导入完整的库。

导入不必要的库会导致代码性能下降。

例子:

假设您需要找出一个数字的平方根。而不是这个:

import math
value = math.sqrt(50)

用这个:

from math import sqrt
value = sqrt(50)

6.字符串连接

在 python 中,我们使用“+”运算符连接字符串。但是在 python 中连接字符串的另一种方法是使用 join 方法。

Join 方法是一种更 Pythonic 的连接字符串的方法,它也比使用 '+' 运算符连接字符串更快。

join() 方法更快的原因是“ +” 运算符创建一个新字符串,然后在每一步复制旧字符串,而 join() 方法不是这样工作的。

例子:

output = "Programming" + "is" + "fun

使用连接方法:

output = " ".join(["Programming" , "is", "fun"]) 

两种方法的输出将是相同的。唯一的区别是 join() 方法比 '+' 运算符快。

结论

这就是这篇文章的全部内容。在本文中,我们讨论了一些可用于使您的代码运行得更快的技巧。这些技巧尤其适用于时间限制就是一切的竞争性编程。

我希望你喜欢这篇文章。谢谢阅读!

参考文章:https://www.kdnuggets.com/2021/06/make-python-code-run-incredibly-fast.html

推荐书单

《Python从入门到精通》

https://item.jd.com/13284890.html

《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。

《Python从入门到精通(第2版)》可作为软件开发入门者的学习用书,也可作为高等院校相关专业的教学参考用书,还可供开发人员查阅、参考使用。

这本书有如下特色:

  • 循序渐进,实战讲述

  • 243集教学微课视频,39小时知识点精讲,可听可看,随时随地扫码学

  • 趣味解读,易教易学

  • 赠送Python实战训练背记手册

  • 在线解答,高效学习

    企业QQ、QQ群在线答疑,明日学院社区答疑。

    每周清大文森学堂在线直播答疑。

精彩回顾

Python是如何跑起来的?从字节码说起

【案例】如何使用Flask构建天气预报

手把手教你创建简单的Python Flask

微信搜索关注《Python学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值