Python循环的技巧和注意事项

news2024/9/21 14:51:43

在这里插入图片描述

  在Python中,主要使用for循环和while循环进行迭代。为了更有效的使用循环,避免一些常见的陷阱,总结了一些关于使用循环的注意事项。

1. 避免无限循环

  在while循环中,程序会一直执行循环体,直到条件不再满足,然后跳出循环。
  无限循环可能会导致程序无法停止或消耗大量内存。在使用无限循环时,务必设置适当的退出条件或使用其他方法来控制循环的执行次数。

while True:  
    print("This is an infinite loop!")

2. 使用range()函数

  range()函数生成一个数字序列,常用于for循环。这有助于遍历数字范围,执行固定次数的循环。

for i in range(5):
    print(i)

3. 避免在循环中修改迭代对象

  在for循环中避免修改正在迭代的对象,因为这可能导致循环无法正确迭代。这是因为for循环在开始时就获取了迭代对象的引用,如果对象发生改变,可能导致不可预测的结果。
  应该使用新的列表或其他数据结构来保存修改后的值。

# 不推荐的写法
for item in my_list:
    if some_condition:
        my_list.remove(item)

4. break和continue语句

  break语句用于提前退出循环,而continue语句用于跳过循环中的某些代码。这可以用于在满足某些条件时提前终止循环或跳过特定的迭代。

# break示例
for i in range(10):
    if i == 5:
        break  # 退出循环
    print(i)
# continue示例
for num in range(10):  
    if num % 2 == 0:  # 检查是否为偶数  
        continue  # 如果是偶数,则跳过当前迭代,并进入下一次迭代  
    print(num)  # 如果为奇数,则打印该数字

5. 列表推导式

  列表推导式是一种用于简化创建列表的语法,可以在一行代码中生成列表,具有简洁而清晰的语法。

squares = [x**2 for x in range(1, 11)]  
print(squares)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
even_numbers = [num for num in numbers if num % 2 == 0]  
print(even_numbers)  # 输出:[2, 4, 6, 8]
strings = ['apple', 'banana', 'cherry']  
uppercase_strings = [string.upper() for string in strings]  
print(uppercase_strings)  # 输出:['APPLE', 'BANANA', 'CHERRY']

6. 使用else子句

  else子句用于在循环正常结束时执行一些代码,它不会在循环被break语句中断时执行。

# 在循环正常结束时执行代码
for i in range(5):  
    print(i)  
else:  
    print("Loop ended normally")
# 在循环提前结束时执行代码
for i in range(5):  
    if i == 3:  
        break  
    print(i)  
else:  
    print("Loop was interrupted")

7. enumerate()函数

  enumerate()函数用于在循环中同时获取索引和元素值,返回一个包含索引和对应元素的元组。

lst = ['apple', 'banana', 'cherry']  
for i, fruit in enumerate(lst, start=1):  
    print(f"Index: {i}, Fruit: {fruit}")

8. zip()函数

  zip()函数用于将两个或多个可迭代对象的元素一一配对,需要同时迭代多个序列时很有用。

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for item1, item2 in zip(list1, list2):
    print(item1, item2)

9. 性能优化

  在循环中进行昂贵的字符串拼接时,应避免多次修改不可变字符串。每次修改都会创建一个新字符串对象,而使用join()方法则更高效。

# 不推荐的写法
result = ""
for item in my_list:
    result += str(item)
# 推荐使用join()方法
result = ''.join(str(item) for item in my_list)

10. 尽量在循环体内使用局部变量

  在循环中,访问局部变量比访问全局变量更快。因此,如果需要在循环中使用变量,那么应该将它们定义为局部变量。

# 不好的做法,使用全局变量  
x = 0  
for i in range(10):  
    x += 1  # 访问全局变量x,速度较慢  
    print(x)  
  
# 好的做法,使用局部变量  
for i in range(10):  # 在循环中定义局部变量x,速度更快  
    x = i  # 定义局部变量x,速度更快  
    print(x)  # 访问局部变量x,速度更快

11. 避免不必要的计算

  在循环中,反复进行相同的计算会浪费大量时间。如果可以在循环开始前就计算出结果,就不要在循环中反复计算。

# 不好的做法  
for i in range(10):  
    result = complex_calculation(i)  
    print(result)  
  
# 好的做法  
result = complex_calculation(i)  
for i in range(10):  
    print(result)

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

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

相关文章

2023年05月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有列表L=[‘UK’,‘china’,‘lili’,“张三”],print(L[-2])的结果是?( ) A: UK B: ‘lili’,‘张三’ C: lili D: ‘UK’,‘china’,‘lili’ 答案:C 列表元素定位 第2题 …

【VSCode】配置C/C++开发环境教程(Windows系统)

下载和配置MinGW编译器 首先,我们需要下载并配置MinGW编译器。 下载MinGW编译器,并将其放置在一个不含空格和中文字符的目录下。 配置环境变量PATH 打开控制面板。可以通过在Windows搜索栏中输入"控制面板"来找到它。 在控制面板中&#xf…

Apache Pulsar 技术系列 - 基于 Pulsar 的海量 DB 数据采集和分拣

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制、快速扩容、灵活容错等特性。本文是 Pulsar 技术系列中的一篇,主要介绍 Pulsar 在海量DB Binlog 增量数据采集、分拣场景下的应用。 前言…

电视剧剪辑,微课制作神器Camtasia的干货介绍,建议收藏。

最近无论是b站,抖音,快手等视频软件中都有不少微课视频、电视剧解说横空出世,通过这些“热度”带来的收益也是无法估量的,很多自媒体博主月入上万惹人羡慕。 不少朋友也想在这股短视频洪流中分一碗羹,但又苦于技术跟不…

大模型架构创新已死?

金磊 白交 发自 凹非寺 量子位 | 公众号 QbitAI 一场围绕大模型自研和创新的讨论,这两天在技术圈里炸了锅。 起初,前阿里技术VP贾扬清,盆友圈爆料吐槽:有大厂新模型就是LLaMA架构,但为了表示不同,通过改变…

RocketMQ中的消息种类以及消费模式

RocketMQ中的消息种类以及消费模式 前言消息的种类按消息的发送方式同步消息异步消息单向消息 按消息的种类普通消息(Normal Message)顺序消息(Orderly Message)延时消息(Delay Message)事务消息&#xff0…

2023年阿里云服务器购买指南,优惠云服务器性能说明

云服务器作为当下互联网行业的重要基础设施之一,对于个人博客、企业展示型官网以及开发者来说,是必不可少的工具。2023年,阿里云金秋云创季推出了两款特惠的云服务器,为用户提供了更加优惠和实用的选择。 1. 轻量应用服务器2核2G…

除了Excel中可以添加公式之外,在Word中也可以添加公式,不过都是基于表格

公式是必不可少的,因为它们有助于简化任何数学任务。微软的应用程序中有许多数学公式。微软应用程序之一的Word配备了一个公式功能,可以执行各种操作。本文将讨论如何在Word中使用和添加公式。 在Word中,公式主要用于表格。因此,你需要有一个表格才能在Word中使用公式。 …

盘点30个Python树莓派源码Python爱好者不容错过

盘点30个Python树莓派源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1LA4cLunntKW3qO5aok3xAQ?pwd8888 提取码:8888 项目名称 PiCar-raspber…

2023亚太杯数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&…

响应系统的作用与实现

首先讨论什么是响应式数据和副作用函数,然后尝试实现一个相对完善的响应系统。在这个过程中,我们会遇到各种各样的问题,例如如何避免无限递归?为什么需要嵌套的副作用函数?两个副作用函数之间会产生哪些影响&#xff1…

儿童水杯上架亚马逊美国站CPC认证办理 ,常见儿童产品CPC认证测试要求

美国CPSC从2021/03/22开始改革,凡是他们管辖范围内的产品,都会被标记审查,如有相关产品请提前准备好相关文件比如CPC检测报告、认证等等,以备目的港海关审查。 CPC认证介绍 CPC证书即儿童产品证书,适用于12岁以下的儿…

腾讯云新用户优惠券如何领取?详细教程来了!

腾讯云一直致力于为广大用户提供优质、高效的云计算服务。为了吸引新用户,腾讯云推出了新用户专属优惠券,本文将详细介绍如何领取腾讯云新用户优惠券,助力大家轻松上云! 一、腾讯云新用户优惠券领取 领券入口:https:/…

人力项目框架解析新增修改方法

在迁移项目但是遇到了一些问题,迁移项目的时候发现项目的整体框架很有趣,但是苦于项目框架太大了,竟然只能完整迁移,做不到部分迁移,于是我也只能从一半的角度来进行解释整个项目。 雇员 我们雇员这个为对象讲解一下…

Django(六、模板层)

文章目录 模板传值模板语法传值特性 模板语法之过滤器常用的过滤器模板层之标签模板中的标签的格式为标签之if判断 标签之for循环模板的继承与导入模板导入导入格式 模板传值 """ 模板层三种语法 {{}}:主要与数据值相关 {%%}:主要与逻辑相关 {##}:模…

解锁数据潜力:为什么你应该考虑使用向量数据库

文章目录 前言什么是向量和向量数据库使用示例Amazon OpenSearch Serverless向量引擎总结 前言 根据DC调查数据显示,全球在A1技术和服务上的支出2023年将达到1540亿美元,到2026年将超过3000亿美元。其中,向量数据库为AI的开发、增强内容生成…

力扣203:移除链表元素

力扣203:移除链表元素 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出&a…

(Matalb回归预测)GWO-BP灰狼算法优化BP神经网络的多维回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码: 四、完整程序数据使用说明下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Mata…

keepalived安装配置(服务器主备、负载均衡)

系统拓扑 安装keepalived 主备服务器上都需要安装 在线安装 yum install -y keepalived 离线安装 # todo 服务器准备 虚拟机ip:192.168.11.56 主服务器:192.168.11.53 备服务器:192.168.11.54 配置文件修改 keepalived安装之后&…

算法刷题:P1908 逆序对

解题关键:就是利用分治的思想,使用归并排序,因为逆序对实际上就是“左侧的数字比右侧大就算一个逆序对”。而这个“左侧”和“右侧”可以相对来看,即左侧的左侧一定就是左侧,说的有点抽象,哈哈哈哈。 花了…