首页
Preview

Python中超快速的循环方式

图片来自Frank Andrade的Shutterstock授权

Python因其速度较慢而闻名。虽然Python比其他语言慢是事实,但是有一些方法可以加速我们的Python代码。

如何加速?简单,优化你的代码。

如果我们编写的代码占用的内存和存储空间很少,不仅可以完成任务,还可以使Python代码运行更快。

下面是我在我参加的Python课程中学到的一个快速和超快速的Python循环方式(我们永远不会停止学习!)。

普通循环

假设我们想求1到100000000的数字之和(我们可能永远不会这样做,但这个大数字可以帮助我说明问题)。

一种典型的方法是创建一个变量total_sum=0,循环遍历范围并在每次迭代中将total_sum的值递增i

这可以完成任务,但需要约6.58秒的时间。

虽然现在看起来不太慢,但当你在范围内添加更多的0时,它会变得更慢。

让我们加速一下!

使用内置函数更快地循环

在Python中更快的循环方式是使用内置函数。

在我们的例子中,我们可以用sum函数代替for循环。该函数将计算数字范围内的值的总和。

上面的代码只需要0.84秒。这比我们之前使用的循环要快得多!这就是为什么我们应该选择内置函数而不是循环。

但是仍有改进的空间。

使用Numpy超快速循环

几周前,在我参加的数据科学课程中,我了解到我应该遵循的一种软件工程实践是优化我的代码。

我们可以通过矢量化操作来优化循环。这比其纯Python等效项(特别是在数值计算中)快一到两个数量级。

矢量化是我们可以通过NumPy获得的。Numpy是一个具有高效数据结构的库,旨在存储矩阵数据。它主要用C语言编写,因此速度是你可以依赖的。

让我们尝试使用Numpy方法.sum.arange来代替Python函数。

这可以在0.22秒内完成任务。这比之前的方法要快得多。

这就是为什么每当可能时,你应该使用矢量运算而不是循环的原因。

使用更多计算来测试循环和Numpy

到目前为止,我们已经看到了Numpy的一个简单应用,但是如果我们不仅有一个for循环,还有一个if条件和更多的计算要做怎么办?

这就是Numpy明显优于循环的时候。

想象一下,我们有一个随机考试成绩的数组(从1到100),我们想得到不及格(分数<70)的人的平均分数。

下面是我们使用for循环的方法。

这大约需要15.7秒。不错,但是我们可以用Numpy获得更快的结果。

下面是我们使用Numpy的方法。

上面的代码只需要大约0.78秒。这快得多了,而且代码也很简单!

译自:https://towardsdatascience.com/a-super-fast-way-to-loop-in-python-6e58ba377a00

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
alivne
复杂的问题简单化

评论(0)

添加评论