Python的for循环、列表解析以及Numpy数组的计算对比

import time # 用于计时的模块导入
import numpy as np # 最常使用的numpy数据处理模块

#创建一个1~10000000的列表,然后分别以for循环的方式,列表解析的方式以及numpy数组函数的方式来对列表中每个元素计算平方
num_list = range(1,10000000,1)

#for循环计算计时
for_time1 = time.time()
num_list_new1 = []
for n in num_list:
num_list_new1.append(pow(n,2))
for_time2 = time.time()
for_elapse_time = for_time2 - for_time1

#列表解析计算计时
list_time1 = time.time()
num_list_new2 = [pow(n,2) for n in num_list]
list_time2 = time.time()
list_elapse_time = list_time2 - list_time1

#numpy一维数组计算计时
numpy_time1 = time.time()
num_array = np.array(num_list)
num_list_new3 = list(np.power(num_array,2))
numpy_time2 = time.time()
numpy_elapse_time = numpy_time2 - numpy_time1

#显示三种计算的计时
print(“for_elapse_time = %f” % for_elapse_time)
print(“list_elapse_time = %f” % list_elapse_time)
print(“numpy_elapse_time = %f” % numpy_elapse_time)

计算结果如下:
for_elapse_time = 7.633032
list_elapse_time = 5.294393
numpy_elapse_time = 2.268097

可以看到for循环是最慢的循环计算,列表解析相比for循环会更快一些,而最快的是Numpy数组计算,这是因为for循环和列表解析都是针对目标列表的每个元素分别单独去计算,有多少个元素,就存在多少个指针,占用CPU和内存都很大,存储地址也不连续,访问耗时也因此很多,而Numpy是将列表中都是同类型的元素处理成了一个一维数组,只需要一个指针,计算类似于对一个矩阵进行计算处理。

关于列表解析为何比for循环要快,可以参看如下链接的文章
https://blog.csdn.net/qq_32793161/article/details/125789881

因此在实际项目开发过程中,不到万不得已千万不用for循环,尽量优先选择Numpy的数组计算,其次才考虑列表解析。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值