程序员学长
2022/11/02阅读:24主题:凝夜紫
提升python执行效率的若干方法
大家好,我是小寒。
一提到 python,大家的第一印象就是 python 语法简单,有丰富的库,它在机器学习和大数据中广泛使用。
同样,python 速度慢 也给大家留下了深刻印象。
不过,我们可以使用一些技巧来克服这个问题。
在本文中,我将分享一些 Python 技巧,使用这些技巧可以让我们的 Python 代码运行得比平时更快。
一、正确的算法和数据结构
「选择正确的数据结构,对代码的效率提升是显而易见的。」
python 中内置了 「list、tuple、set、dictionary」 等多种数据结构。大多数人在所有情况下都使用 list (列表) 数据结构。
在 python 中,「集合和字典具有 O(1) 的查找性能」,因为它们使用哈希表。在以下情况下,你可以使用集合和字典来代替列表:
-
集合中没有重复的元素。 -
你需要在集合中重复搜索元素。 -
该集合包含大量元素。
二、使用内置函数和库
Python 的内置函数是加快代码速度的最佳方法之一。
你必须在需要时,使用内置的 python 函数(学习的情况除外)。
这些内置函数都经过了很好的测试和优化。
这些内置函数之所以快,「是因为 python 的内置函数,如min、max、all、map等都是用C语言实现的。」
案例
newlist = []
for word in wordlist:
newlist.append(word.upper())
编写此代码的更好方法是:
newlist = map(str.upper, wordlist)
这里我们使用的是内置的 「map」 函数,它是用 C 编写的。因此,它比使用循环要快得多。
三、使用多个分配
如果要分配多个变量的值,请不要逐行分配它们。
Python 有一种优雅且更好的方式来分配多个变量。
案例
name = "张三"
sex = "男"
city = "北京"
分配这些变量的更好方法是:
name,sex,city = "张三","男","北京"
这种变量分配比上面的分配更加简洁和优雅。
四、使用列表推导
列表推导是一种优雅且更好的方法,只需一行代码即可根据现有列表的元素创建新列表。
「列表推导被认为比定义一个空列表并向该空列表添加元素更符合 Python 风格的创建新列表的方式。」
列表推导的另一个优点是它比使用 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]
使用列表推导时,代码看起来更干净。
五、正确导入
你应该「避免导入不必要的模块和库」,除非你需要它们。
你可以指定模块名称而不是导入完整的库。
导入不必要的库会导致代码性能下降。
案例:
假设你需要找出一个数字的平方根。
import math
value = math.sqrt(50)
一种更好的写法。
from math import sqrt
value = sqrt(50)
六、字符串连接
在 python 中,我们经常使用 “+” 运算符来连接字符串。
其实,还有另外一种字符串连接的方法 「join」。
Join 方法是一种更符合 python 风格的连接字符串的方法,它也比使用 '+' 运算符连接字符串更快。
「join() 方法更快的原因是 “ +” 运算符创建一个新字符串,然后在每一步复制旧字符串,而 join() 方法不是这样工作的。」
案例
output = "Programming" + "is" + "fun
使用 Join 方法:
output = " ".join(["Programming" , "is", "fun"])
两种方法的输出将是相同的。唯一的区别是 join() 方法比 '+' 运算符快。
作者介绍