99% 的人都不知道,哪种 Python 循环最快?

news2024/9/25 7:14:55

大家好,在Python编程中,循环是我们经常使用的工具,用来重复执行一些代码块。我们通常会在 for 循环、while 循环和列表推导式中选择一种来解决问题。但你是否曾想过:哪种循环效率最高? 今天,我们就来一次轻松有趣的循环效率大揭秘!

三种循环方式简介

  1. 1. for 循环: for 循环是最常见的循环方式。它可以遍历任何可迭代对象,比如列表、元组、字符串等。代码简单明了,非常适合大多数场景。

    for i in range(10):
        print(i)
  2. 2. while 循环: while 循环会一直执行代码块,直到条件不再满足为止。它非常适合当你不知道循环次数时使用,比如等待某个条件成立。

    i = 0
    while i < 10:
        print(i)
        i += 1
  3. 3. 列表推导式:列表推导式是 Python 的一种特性,它允许你用一行代码生成列表。相对于 for 循环,它显得更为简洁。

    squares = [i**2 for i in range(10)]

效率大比拼

接下来,我们来看看这三种循环方式的效率差异。

我们用以下代码对它们进行简单的性能测试:

import time

# 生成一个相同的数据集
data = list(range(2000000))

# 测试 for 循环
start_time = time.time()
for i in data:
    _ = i ** 2
for_time = time.time() - start_time

# 测试 while 循环
start_time = time.time()
i = 0
while i < len(data):
    _ = data[i] ** 2
    i += 1
while_time = time.time() - start_time

# 测试列表推导式
start_time = time.time()
squares = [i ** 2 for i in data]
list_comp_time = time.time() - start_time

print(f"for 循环耗时: {for_time:.6f} 秒")
print(f"while 循环耗时: {while_time:.6f} 秒")
print(f"列表推导式耗时: {list_comp_time:.6f} 秒")

图片

 

结果分析

运行这段代码,你会发现以下现象:

  1. 1. for 循环 的表现通常优于 while 循环。原因在于 for 循环在遍历时更为直接,而 while 循环则需要不断检查条件并更新计数器,增加了开销。

  2. 2. 列表推导式 通常最快。它的实现方式更加优化,能够在 C 语言层面减少 Python 解释器的工作。因此,列表推导式在处理大量数据时,常常是效率最高的。

实际应用中的选择

虽然从效率上来看,列表推导式 似乎是最优选择,但并不意味着你每次都应该使用它。选择合适的循环方式,应该考虑以下几点:

  1. 1. 代码可读性:对于简单的操作,列表推导式无疑是简洁高效的。但如果你的循环逻辑复杂,for 循环更为直观、易读。

  2. 2. 实际场景需求:当你需要在循环中间进行复杂的操作或者中断循环时,while 循环可能是更好的选择。

  3. 3. 性能瓶颈:在大多数情况下,循环的性能差异对你的程序影响不大。如果你确实遇到了性能瓶颈,优先考虑代码的算法优化,而非盲目追求循环的效率。

总结来说,列表推导式 是 Python 中效率最高的循环方式,尤其适合简单的数据处理任务。而 for 循环 和 while 循环 各有其独特的应用场景,在代码可读性和控制流上拥有无可替代的优势。

对Python感兴趣的朋友们,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!

包括:Python激活码+安装包、Python
web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue -- 总结 02

Vue脚手架 安装Vue脚手架&#xff1a; 在cmd中安装(输入):npm install -g vue/cli 如果下载慢或下载不了&#xff0c;可以安装(cmd输入)淘宝镜像:npm config set registry https://registry.npmmirror.com 用命令创建Vue项目 在要创建的vue项目的文件夹里输入 cmd 回车 创…

CSS 2D3D转换与动画

CSS 2D&3D转换与动画 字体图标 字体图标展示的是图标&#xff0c;本质是字体 处理简单的&#xff0c;颜色单一的图片&#xff0c;使用字体图标 使用&#xff1a; 下载&#xff1a;https://www.iconfont.cn/ 引入字体图标样式表 对应标签上classz增加对应的类名&…

使用pytest的 reporting特性来生成报告

特性 1.HTML 报告&#xff1a;使用 pytest-html 插件&#xff0c;你可以生成 HTML 格式的测试报告。只需在项目的 pytest.ini 文件中添加以下内容&#xff1a; [pytest] addopts --htmlreport.html然后&#xff0c;在运行 pytest 时&#xff0c;将会生成一个名为 report.htm…

Serilog文档翻译系列(二) - 设置AspNetCore应用程序

Serilog 日志记录适用于 ASP.NET Core。此包将 ASP.NET Core 的日志消息通过 Serilog 进行路由&#xff0c;使你可以将有关 ASP.NET 内部操作的信息写入与应用程序事件相同的 Serilog 接收器中。 安装并配置了 Serilog.AspNetCore 后&#xff0c;你可以直接通过 Serilog 或ASP…

CDS Association

CDS view Association 引入的缘由 CDS 视图不会被业务用户直接访问&#xff0c;而是会被 ABAP 程序、Fiori 应用程序或 BI 前端工具使用。假设在 5 个不同的表上使用 JOINS 创建了 CDS 视图&#xff0c;则每次触发此 CDS 视图时都会执行此 JOIN 条件。即使业务用户只查看 2 个…

十分钟弄懂最快的APP自动化工具uiautomator2

相信很多使用appium做过APP自动化的人都深有感触&#xff1a; appium运行慢、时间长uiautomatorviewer定位元素时得关掉appium server在低版本的appium上获取toast需要切换automationName 现在有一款自动化测试工具uiautomator2&#xff0c;它几乎完美的避免了以上的问题。简…

数据结构---循环队列---树的基本概念

目录 一、队列 1.1.队列 1.创建循环队列&#xff08;顺序结构&#xff09; 2.判断队满 3.判断队空 4.进队 5.出队 6.销毁 二、树 2.1.树的特点 2.2.基本概念 1.根节点 2.分支节点 3.叶节点 4.层 5.深度 6.高度 7.度 2.3.二叉树 1.特点 2.遍历方式 2.4.满二…

编程要由“手动挡”变“自动挡”了?Cursor+Claude-3.5-Sonnet,Karpathy大神点赞的AI代码神器!如何使用详细教程

Cursor情况简介 AI大神Andrej Karpathy都被震惊了&#xff01;他最近在试用 VS Code Cursor Claude Sonnet 3.5&#xff0c;结果发现这玩意儿比GitHub Copilot还好用&#xff01; Cursor在短短时间内迅速成为程序员群体的顶流神器&#xff0c;其背后的原因在于其默认使用Open…

在postman中使用javascript脚本生成sign签名

大多数线上api接口服务都需要提供签名才可以正常访问。虽然带来了安全&#xff0c;单有时为了快速验证接口的某个功能&#xff0c;就不得不编写代码&#xff0c;计算签名然后再请求。那么&#xff0c;使用postman提供的script功能&#xff0c;是否能实现签名计算功能吗&#xf…

HarmonyOS开发实战( Beta5版)滑动白块问题解决最佳实践

当应用程序需要使用列表显示内容时&#xff0c;通常会使用ListLazyForEach组件来实现。但是列表中需要显示耗时加载的内容时&#xff0c;仅依靠ListLazyForEach不足以获得最优的用户体验。例如显示在线网络图片&#xff0c;在弱网以及快速滑动浏览的场景下&#xff0c;由于来不…

哪种无线可视挖耳勺最实用?五大优良黑马机型测评

无线可视挖耳勺是热度特别高的个人清洁工具&#xff0c;不仅能够更加清晰地观察自己耳内的状况&#xff0c;从而更加安全、有效地清洁耳朵&#xff0c;可以发挥多种多样的作用&#xff0c;但也存在品牌繁杂的情况&#xff0c;其中还有一些不专业的产品。在市面上&#xff0c;我…

Win11 本地部署大模型 WebUI + ComfyUI

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 Web 用户界面&#xff08;WebUI&#xff09;&#xff0c;它被设计用于完全离线操作。该项目最初被称为 Ollama WebUI&#xff0c;后来更名为 Open WebUI。Open WebUI 的主要目的是为本地的大语言模型&#xff08;LLMs&…

一条执行24s的SQL产生7小时主备延时(案例详解)

前言 在之前的文章《一条执行24s的SQL竟产生7小时数据延时&#xff0c;数据库高可用做了个寂寞》中&#xff0c;我们描述了一个问题现象&#xff1a;一条在主库执行24秒的SQL语句&#xff0c;却导致了主从延时长达7小时。文章发布后&#xff0c;引发了小伙伴的热烈讨论&#x…

zabbix安装过程中仓库不可用问题解决

官网文档安装zabbix-server&#xff1a;Download and install Zabbix 安装zabbix-server过程中碰到如下报错&#xff1a; 导致原因是仓库url被qiang&#xff0c;创建如下仓库&#xff1a; 仓库文件&#xff1a; [centos-sclo-rh] nameCentOS-7 - SCLo rh baseurlhttps://mirr…

6 款 AI 视频全自动国产剪辑软件推荐

这两年刷抖音、B站&#xff0c;你是不是也常看到AI做的视频火得一塌糊涂&#xff0c;流量爆棚&#xff0c;还帮作者赚了钱?那没学过剪辑的你&#xff0c;想不想零成本、零门槛&#xff0c;也用AI软件赚点外快呢?告诉你&#xff0c;绝对行得通!现在AI技术牛了&#xff0c;网上…

顺序表

目录 1. 数据结构 2. 顺序表 1&#xff09;线性表 2&#xff09;顺序表分类 3、动态顺序表的实现 1. 数据结构 数据&#xff1a;常见的数值1、2、3、4.....、教务系统里保存的用户信息&#xff08;姓名、性别、年龄、学历等 等&#xff09;、网页里肉眼可以看到的信息&…

ARM体系结构及接口技术(四)LED灯实验---Makefile文件解析

文章目录 一、汇编版本二、C语言版本&#xff08;一&#xff09;Makefile文件1. .elf文件2. .map文件3. wildcard函数4. patsubst函数 &#xff08;二&#xff09;map.lds&#xff08;三&#xff09;start.S 一、汇编版本 # 工程名对应的变量 NAMEasm-led# 交叉编译器的前缀的…

十、软件工程基础知识(考点篇)试题

降低需求变更成本&#xff0c;第一想到的就是原型法&#xff0c;后面对于已完成开发工作的的反馈意见&#xff0c;已完成开发工作只有增量式的吧&#xff0c;先开发核心的&#xff0c;然后发布一版&#xff0c;得到用户反馈再修改并开发次核心。快速原型强调的是&#xff0c;先…

BP神经网络学习内容分享:数据降维

在数据分析和机器学习的领域中&#xff0c;数据降维是一项非常重要的技术。它旨在减少数据集中的特征数量&#xff0c;同时尽可能保留原始数据的重要信息。这不仅有助于减少计算复杂度和提高算法效率&#xff0c;还能有效避免过拟合&#xff0c;提升模型的泛化能力。本文将简要…

数学建模--皮尔逊相关系数、斯皮尔曼相关系数

目录 1.总体的皮尔逊相关系数 2.样本的皮尔逊相关系数 3.对于皮尔逊相关系数的认识 4.描述性统计以及corr函数 ​编辑 5.数据导入实际操作 6.引入假设性检验 6.1简单认识 6.2具体步骤 7.p值判断法 8.检验正态分布 8.1jb检验 8.2威尔克检验&#xff1a;针对于p值进行…