python矩阵计算速度很慢_程序运行慢?你怕是写的假 Python

本文通过5个示例展示了如何利用Python内置方法提高代码性能,包括数组求平方和、字符串拼接、筛选奇数、数组相加和查找相同元素等操作。通过对循环、列表推导式、生成器表达式和内置函数的运用,性能得到显著提升。
摘要由CSDN通过智能技术生成

Python程序运行太慢的一个可能的原因是没有尽可能的调用内置方法,下面通过5个例子来演示如何用内置方法提升Python程序的性能。

1. 数组求平方和

输入一个列表,要求计算出该列表中数字的的平方和。最终性能提升了1.4倍。首先创建一个长度为10000的列表。

arr = list(range(10000))

1.1 最常规的写法

while循环遍历列表求平方和。平均运行时间2.97毫秒。

def sum_sqr_0(arr):

res = 0

n = len(arr)

i = 0

while i 

res += arr[i] ** 2

i += 1

return res

%timeit sum_sqr_0(arr)

2.97 ms ± 36.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

1.2 for range代替while循环

避免i += 1的变量类型检查带来的额外开销。平均运行时间2.9毫秒。

def sum_sqr_1(arr):

res = 0

for i in range(len(arr)):

res += arr[i] ** 2

return res

%timeit sum_sqr_1(arr)

2.9 ms ± 137 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

1.3 for x in arr代替for range

避免arr[i]的变量类型检查带来的额外开销。平均运行时间2.59毫秒。

def sum_sqr_2(arr):

res = 0

for x in arr:

res += x ** 2

return res

%timeit sum_sqr_2(arr)

2.59 ms ± 89 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

1.4 sum函数套用map函数

平均运行时间2.36毫秒

def sum_sqr_3(arr):

return sum(map(lambda x: x**2, arr))

%timeit sum_sqr_3(arr)

2.36 ms ± 15.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

1.5 sum函数套用生成器表达式

生成器表达式如果作为某个函数的参数,则可以省略掉()。平均运行时间2.35毫秒。

def sum_sqr_4(arr):

return sum(x ** 2 for x in arr)

%timeit sum_sqr_4(arr)

2.35 ms ± 107 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

1. 6 sum函数套用列表推导式

平均运行时间2.06毫秒。

def sum_sqr_5(arr):

return sum([x ** 2 for x in arr])

%timeit sum_sqr_5(arr)

2.06 ms ± 27.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

2. 字符串拼接

输入一个列表,要求将列表中的字符串的前3个字符都拼接为一个字符串。最终性能提升了2.1倍。

首先创建一个列表,生成10000个随机长度和内容的字符串。

from random import randint

def random_letter():

return chr(ord('a') + randin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值