广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 中快的循环方式,你知道几种?
  • 393
分享到

Python 中快的循环方式,你知道几种?

Python生成器循环方式 2023-05-14 21:05:30 393人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

大家好,我是 somenzz,今天我们来研究一下 python 中最快的循环方式。各种姿势比如说有一个简单的任务,就是从 1 累加到 1 亿,我们至少可以有 7 种方法来实现,列举如下:1、while 循环def while_loop(n=

大家好,我是 somenzz,今天我们来研究一下 python 中最快的循环方式。

各种姿势

比如说有一个简单的任务,就是从 1 累加到 1 亿,我们至少可以有 7 种方法来实现,列举如下:

1、while 循环

def while_loop(n=100_000_000):
i = 0
s = 0
while i < n:
s += i
i += 1
return s

2、for 循环

def for_loop(n=100_000_000):
s = 0
for i in range(n):
s += i
return s

3、sum range

def sum_range(n=100_000_000):
return sum(range(n))

4、sum generator(生成器)

def sum_generator(n=100_000_000):
return sum(i for i in range(n))

5、sum list comprehension(列表推导式)

def sum_list_comp(n=100_000_000):
return sum([i for i in range(n)])

6、sum numpy

import numpy
def sum_numpy(n=100_000_000):
return numpy.sum(numpy.arange(n, dtype=numpy.int64))

7、sum numpy Python range

import numpy
def sum_numpy_python_range(n=100_000_000):
return numpy.sum(range(n))

上述 7 种方法得到的结果是一样的,但是消耗的时间却各不相同,你可以猜测一下哪一个方法最快,然后看下面代码的执行结果:

import timeit

def main():
l_align = 25
print(f'{"1、while 循环":<{l_align}} {timeit.timeit(while_loop, number=1):.6f}')
print(f"{'2、for 循环':<{l_align}}{timeit.timeit(for_loop, number=1):.6f}")
print(f'{"3、sum range":<{l_align}} {timeit.timeit(sum_range, number=1):.6f}')
print(f'{"4、sum generator":<{l_align}} {timeit.timeit(sum_generator, number=1):.6f}')
print(f'{"5、sum list comprehension":<{l_align}} {timeit.timeit(sum_list_comp, number=1):.6f}')
print(f'{"6、sum numpy":<{l_align}} {timeit.timeit(sum_numpy, number=1):.6f}')
print(f'{"7、sum numpy python range":<{l_align}} {timeit.timeit(sum_numpy_python_range, number=1):.6f}')

if __name__ == '__main__':
main()

执行结果如下所示:

Python 中快的循环方式,你知道几种?

比较快的方式

for 比 while 块

for 和 while 本质上在做相同的事情,但是 while 是纯 Python 代码,而 for 是调用了 C 扩展来对变量进行递增和边界检查,我们知道 CPython 解释器就是 C 语言编写的,Python 代码要比 C 代码慢,而 for 循环代表 C,while 循环代表 Python,因此 for 比 while 快。

numpy 内置的 sum 要比 Python 的 sum 快

numpy 主要是用 C 编写的,相同的功能,肯定是 numpy 的快,类似的,numpy 的 arange 肯定比 Python 的 range 快。

交叉使用会更慢

numpy 的 sum 与 Python 的 range 结合使用,结果耗时最长,见方法 7。最好是都使用 numpy 包来完成任务,像方法 6。

生成器比列表推导式更快

生成器是惰性的,不会一下子生成 1 亿个数字,而列表推导式会一下子申请全部的数字,内存占有较高不说,还不能有效地利用缓存,因此性能稍差。

以上就是Python 中快的循环方式,你知道几种?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Python 中快的循环方式,你知道几种?

本文链接: https://www.lsjlt.com/news/205620.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 中快的循环方式,你知道几种?
    大家好,我是 somenzz,今天我们来研究一下 Python 中最快的循环方式。各种姿势比如说有一个简单的任务,就是从 1 累加到 1 亿,我们至少可以有 7 种方法来实现,列举如下:1、while 循环def while_loop(n=...
    99+
    2023-05-14
    Python 生成器 循环方式
  • 异步编程的几种方式,你知道几种?
    异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间。比如:「发送短信、邮件、异步更新等」,这些都是典型的可以通过异步实现的场景。异步的8种实现方式 1、线程Thread...
    99+
    2023-08-15
  • MySQL中复制表的方式你知道几种
    mysql 想必大家比较熟悉了, 我们常见的crud  sql 想必大家也是手到拈来。 但是我在今儿上数据库课的时候,我好像连mysql中复制表的基础写法 都不会。 可能工作中不常用,但作为基础 还是想写出来分享给大家。 这里 我介绍四种常...
    99+
    2023-09-05
    mysql 数据库 sql
  • python数组循环的几种方式
     Python中循环数组有几种方式: for-in循环,可以遍历数组中的每一个元素。while循环,使用索引进行循环。列表推导式,可以快速创建新的列表。递归,可以遍历多维数组。 for-in循环 arr = [1, 2, 3, 4, 5]f...
    99+
    2023-09-03
    python 开发语言
  • 哪种Python循环方式最快?
    众所周知,Python 不是一种执行效率较高的语言。此外在任何语言中,循环都是一种非常消耗时间的操作。假如任意一种简单的单步操作耗费的时间为 1 个单位,将此操作重复执行上万次,最终耗费的时间也将增长上万倍。while 和 for 是 Py...
    99+
    2023-05-14
    Python 语言 循环方式
  • java 导出到excel的几种方式你要知道
    java导出excel常用的方式使用poi apache开源方式导入导出,很多公司自己研发导出组件对于常用的导入导出其实都使用开源组件。 介绍常用的excel导出方式: 1,poi 方式 上图一个我之前写的很老的导出,代码比较麻烦,但是也是...
    99+
    2023-09-01
    java apache 开发语言
  • PHP 生成随机数的 5 种方式,你知道几种
    我知道五种PHP生成随机数的方式:1. 使用rand()函数:rand()函数可以生成一个指定范围内的随机整数。例如,生成1到10之...
    99+
    2023-09-21
    PHP
  • 详解JS中你不知道的各种循环测速
    目录前言1. for 循环2. while 循环和 do-while 循环3. forEach、map 和 reduce 循环3.1 forEach 的简要介绍3.2 forEach...
    99+
    2022-11-12
  • JavaScript中this的绑定你知道几种?
    目录执行上下文this到底是什么呢调用位置绑定规则特例面试题执行上下文 我们知道执行上下文分为两种:全局上下文和函数上下文(我的这篇文章对于执行上下文有讲解还对执行上下文和作用域迷糊...
    99+
    2023-02-08
    JavaScript this绑定 JavaScript this
  • JS中的几种循环和跳出方式
    JS中的循环是大家很常用的,这里总结一下几种常用循环的跳出方式。 1.for循环 var arr = ['q','w','e','r','t']; for(var i=0, len ...
    99+
    2022-11-13
  • JavaScript For循环的方式有哪几种
    JavaScript中常见的循环方式有以下几种:1. for循环:通过指定初始条件、循环条件和循环增量来执行一系列语句,直到循环条件...
    99+
    2023-09-22
    JavaScript
  • vue组件间传值的方法你知道几种
    目录一丶父子组件传值二丶子父组件传值三丶兄弟组件传值四丶$parent /$children与ref总结一丶父子组件传值 先在父组件中给子组件的自定义属性绑定一个 父组件的变量 &l...
    99+
    2022-11-13
  • java跳出循环的方式有哪几种
    Java中跳出循环的方式有以下几种:1. 使用break语句:当循环条件满足某个条件时,可以使用break语句跳出循环,执行循环后面...
    99+
    2023-10-18
    java
  • java循环嵌套的方式有哪几种
    在Java中,循环嵌套的方式有以下几种:1. for循环嵌套:在一个for循环内部再嵌套一个或多个for循环。```javafor ...
    99+
    2023-09-13
    java
  • 浅析Spring IOC 依赖查找你需要知道的几种方式
    目录1. 根据 Bean 名称查找实时查找延时查找2. 根据 Bean 类型查找单个 Bean 对象集合 Bean 对象3. 根据 Bean 类型 + 名称查找首先,我们创建一个包含...
    99+
    2022-11-12
  • php中循环数组的几种方式是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑数组循环遍历的四种方式1、使用for循环遍历数组conut($arr);用于统计数组元素的个数。for循环只能用于遍历,纯索引数组!!!!如果存在关联数组,count统...
    99+
    2018-01-31
    php 数组 循环数组
  • Python中快的循环方式有哪些
    这篇文章主要介绍“Python中快的循环方式有哪些”,在日常操作中,相信很多人在Python中快的循环方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中快的循环方式有哪些”的疑惑有所帮助!...
    99+
    2023-07-06
  • JavaScript循环遍历的24个方法,你都知道吗
    目录前言一、数组遍历方法1. forEach()2. map()3. for of4. filter()5. some()、every()6. reduce()、reduceRigh...
    99+
    2022-11-12
  • js中几种循环的退出方式实例总结
    目录一、for循环二、forEach循环二、map循环三,for in 循环四,for of 循环五,every()和some()附:return、continue、break三者的...
    99+
    2022-12-08
    js循环退出方式是什么 js循环终止 js如何退出for
  • 你知道将Bean交给Spring容器管理有几种方式(推荐)
    目录Spring核心包扫描+组件注解配置项一配置项二配置项三扩展@Import注解导入@Import直接导入类@Import + ImportSelector@Import + Im...
    99+
    2022-11-13
    Bean交给Spring容器管理方式 Spring容器管理bean
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作