程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

如何用Python列表推导式减少代码运行时间

hfteth 2025-03-20 15:06:40 技术文章 13 ℃

Python性能优化:从循环到列表推导式。

先来运行一下这个代码,这个代码分两部分,上边一部分,下边一部分。

·右键单击空白处,点击运行Python,点击在终端中运行Python文件,等几秒钟结果出来了。这个是上边这些代码运行的结果,这个是下边这些在完成的结果。

·上面是使用手动遍历移除所有匹配元素,所用时间3.187秒。使用列表推导式移除所有匹配元素,所用时间1.634秒。上边这段代码用的时间是下边这段代码用的时间两倍。

·再看一下代码,先看上面这些代码。

→第一步import time,先把time包导入进来,导入time包的目的是要计时刚才两个时间,就用time包里边的方法计算。

→第二步生成大量数据。首先先定义了一个数组,有5个元素,然后乘以这是1000万,也就是有5000万个元素,这一个列表里面另一个变量target是大写的"A'。

→然后记录一下起始时间,用time包的time函数记录起始时间。

→后面定义了一个新的列表,然后对旧的列表list1进行循环,取出每一个元素都赋给item。

→判断一下如果item不等于target,也就是如果列表循环当中取出的元素不等于大写的'A',new_list.append(item)就把元素追加到new_list新列表里边去,也就是对这5000万个元素进行循环,把不是大写'A'的元素全都追加到new_list新列表里边去。

→等循环执行完了,new_list里边就是所有的不是大写"A'的元素,记录一下结束时间。

→最后再计算一下程序运行时间。

下边这个代码跟上边那个代码基本差不多,这个列表也是5000万个元素,连元素的值都是一样的,target也是大写的"A',也是记录起始时间。关键是这儿不一样,上面通过一个循环遍历列表里的每一个元素,判断一下这个元素是不是等于target,如果不等于追加到列表里去。

下边只用了一句话,叫列表推导式。新定义了一个list,两个方括号代表它是一个列表,列表里的元素是什么?是x,这个x是forxin list1,这个x是list1里的每一个元素。

forxin list1就是一个循环,它会对list1里的每一个元素进行循环,取出来之后赋给x,if x!=target。也就是说如果列表里边当前循环的元素不等于大写'A',它就会把这个元素放到新列表里边来,后边就记录一下这段代码用了多长时间。

最后的结果就是大家刚才看到的两种方法用的时间的差别非常大,上面这种方法用了3.8秒,下边这种方法用了不到上边这种方法时间的一半。也就是说当对大数据量的数据进行循环操作的时候,使用列表推导式要远远快于这种循环的方式。

最后感谢大家观看,下一个视频再见。

Tags:

最近发表
标签列表