01
引言
大家好,我是AI算法之道!
Python是我最喜欢的编程语言之一,它向来以其简单性、多功能性和可读性而闻名。
大家好!我想与大家分享一些提升Python性能的技巧,我觉得每个人都应该知道,因为我花了很多精力才学会了它。因此,这些技巧在我的项目中发挥了真正的作用。
闲话少说,我们直接开始吧!
02
使用生成器节省内存
data = [process(item) for item in big_list]
def data_generator(big_list):
for item in big_list:
yield process(item)
for item in data_generator(big_list):
# Do something with item
我还记得第一次改用生成器时的感觉--就像变魔术一样。突然间,我的脚本不再占用全部内存,一切都运行得更顺畅了。
03
使用内置函数
cubed = [x*x*x for x in my_list]
import itertools
cubed = map(lambda x: x*x*x, my_list)
当您处理的数据变得庞大时,大家将会真正感受到结果的差异,这将使大家在编写简洁、高效的代码时倍感舒适。
我以前总是避免使用内置函数,因为我觉得自己编写更酷。现在我意识到,代码少意味着错误少。你懂的!!!
04
避免使用全局变量
需要了解的一个关键点是,局部变量要灵活得多,因为很难跟踪哪个模块在使用全局变量,这也给测试工作带来了一些困难。
例如,例子为:
counter = 0
def increment():
global counter
counter += 1
def increment(counter):
return counter + 1
counter = 0
counter = increment(counter)
05
合理使用列表生成式
列表生成式很简单,但可能会被过度使用。如果创建一个列表只是为了循环一次,可以考虑使用生成器。
比如:
results = [process(x) for x in data]
for result in results:
# Do something
一种更好的替代方案为:
for result in (process(x) for x in data):
# Do something
06
快速查找元素
if item in my_list:
# Do something
推荐写法:
my_set = set(my_list)
if item in my_set:
# Do something
我有一个脚本花了很长时间,将列表转换为集合后,运行时间从几分钟缩短为几秒钟。
07
快速查找元素
result = ''
for s in strings:
result += s
result = ''.join(strings)
08
使用多重赋值
temp = a
a = b
b = temp
推荐的写法仅需:
a, b = b, a
同样,解包可以使代码更简洁、更快速:
data = (1, 2, 3)
x, y, z = data
09
总结
这些是我多年来在犯了很多错误之后获得的一些总结。我承认,每个项目都有些不同,你的解决方案确实要能解决你的问题,每当你面临某种瓶颈时,都要注意这些编码细节。希望这些小技巧可以帮助到大家,提升大家的工作效率!
您学废了吗?
点击上方小卡片关注我
添加个人微信,进专属粉丝群!