Python循环的技巧和注意事项

在这里插入图片描述

  在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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pipeline + node +jenkins+kubernetes部署yarn前端项目

1、编写Dockerfile文件 # Set the base image FROM node:16.10.0# WORKDIR /usr/src/app/ WORKDIR /home/option# Copy files COPY ./ /home/option/# Build arguments LABEL branch${BRANCH} LABEL commit${COMMIT} LABEL date${BUILD_DATE} ARG ENV# Set ENV variables ENV …

Debian/Ubuntu 安装 NodeJS【详细步骤】

文章目录 NodeSource 简介Debian/Ubuntu 安装 NodeJS第 1 步:进入 jenkins 容器第 2 步:下载和导入 NodeSource第 3 步:创建 deb 仓库第 4 步:安装 NodeJS第 5 步:卸载NodeJS参考👉 背景:在 Docker 中安装了 Jenkins,Jenkins 镜像为 Debian 11 bullseye。 👉 目标:…

ubuntu 18.04安裝QT+PCL+VTK+Opencv

资源 qt5.14.1:qt5.14.1.run opencv4.5.5:opecv4.5.5压缩包 1.国内换中科大源,加快下载速度 cd /etc/apt/ sudo gedit sources.list 替换成如下内容 deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse deb-src https://mirro…

DM8数据守护集群安装部署_手动切换

一.安装前准备 1.1 硬件环境建议 数据守护集群安装部署前需要额外注意网络环境和磁盘 IO 配置情况,其他环境配置项建议请参考安装前准备工作。 1.1.1 网络环境 心跳网络对 mal 通讯系统的影响非常大,如果网络丢包或者延迟较大,则会严重影…

【蓝桥杯选拔赛真题21】C++行李运费 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

C/C++行李运费 第十二届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 乘坐飞机时,行李超出规定重量后,会对行李进行托运且收取托运费。 以下是某航空公司行李托运的收费标准:“行李重量在 20 公斤内(含 20)按照每公斤 10 元收取费用,超过 20 公斤的…

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

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

jQuery使用echarts循环插入图表

目录 jQuery动态循环插入echarts图表 y轴显示最大值和最小值 x轴只显示两个值&#xff0c;开始日期和结束日期 jQuery动态循环插入echarts图表 html .center_img_list 是我们循环数据的地方 <div class"center_img shadow"><div class"center_img_b…

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

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

业务连续性:确保稳健运营的关键战略

在今天的快节奏商业环境中&#xff0c;保障业务连续性是企业成功的重要保障。业务连续性不仅仅是关于应对自然灾害或技术故障&#xff0c;更是一项战略&#xff0c;涉及组织的整体准备、规划和应对能力&#xff0c;以确保在各种情况下业务的稳健运营。 一、业务连续性的定义 业…

Mybatis-Plus条件构造器QueryWrapper

Mybatis-Plus条件构造器QueryWrapper 1、条件构造器关系介绍 介绍 &#xff1a; 上图绿色框为抽象类 蓝色框为正常类&#xff0c;可创建对象 黄色箭头指向为父子类关系&#xff0c;箭头指向为父类 wapper介绍 &#xff1a; Wrapper &#xff1a; 条件构造抽象类&#xff0…

matplotlib绘图

介绍 在官网上有更多种类的图型的绘制方法 matpoltlib中文官方文档&#xff1a;例子_Matplotlib 中文网 matpoltlib英文官方文档&#xff1a;Examples — Matplotlib 3.8.1 documentation 分类 一、折线图 1、要实现的功能&#xff1a; 2、实例&#xff1a; # 导入包 from…

C# Socket通信从入门到精通(10)——如何检测两台电脑之间的网络是否通畅

前言: 我们在完成了socket通信程序开发以后,并且IP地址也设置好以后,可以先通过一些手段来测试两台电脑之间的网络是否通畅,如果确认了网络通畅以后,我们再测试我们编写的Socket程序。 1、同时按下键盘的windows键+"R"键,如下图: 下面两张图是两种键盘的情…

【luckfox】3、计算重量差

前言 本章结合之前的hx711驱动&#xff0c;实现读取质量&#xff0c;记录时间及剩余质量并存入csv文件&#xff0c;计算质量差并总计。 代码 luckfox-pico\project\app\test_app\hx711\hx711_app_addtime.c #include <stdio.h> #include <stdlib.h> #include &…

故障演练的关键要素及重要性

故障演练是一种有计划的、模拟真实生产环境故障的活动。通过故意引入故障、模拟系统组件失效或模拟其他异常条件&#xff0c;团队可以观察并评估系统在这些情况下的反应。这有助于发现潜在的问题、改进应急响应和提高系统整体的可用性。 一、故障演练的关键要素 计划性&#xf…

今年跳槽成功测试工程师原来是掌握了这3个“潜规则”

随着金九银十逐渐进入尾声&#xff0c;还在观望机会的朋友们已经开始焦躁&#xff1a;“为什么我投的简历还没有回音&#xff1f;要不要趁现在裸辞好好找工作&#xff1f;” “金九银十”作为人们常说的传统“升职加薪”的黄金季节&#xff0c;也是许多人跳槽的理想时机。然而…

基于消息队列+多进程编写的银行模拟系统

银行模拟系统 概述客户端 client.c服务端 serve.c开户 enroll.c存款 save.c转账 transfer.c取款 take.cmakefile文件 概述 该案例大体过程为&#xff0c;服务器先启动&#xff0c;初始化消息队列和信号&#xff0c;用多线程技术启动开户、存钱、转账、取钱模块&#xff0c;并且…

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

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

软件测试项目案例哪里找?【银行/教育/商城/金融/等等....】

项目一&#xff1a;ShopNC商城 项目概况&#xff1a; ShopNC商城是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城&#xff0c;系统PC后台是基于ThinkPHP MVC构架开发的跨…

一个用于操作Excel文件的.NET开源库

推荐一个高性能、跨平台的操作Excel文件的.NET开源库。 01 项目简介 ClosedXML是一个.NET第三方开源库&#xff0c;支持读取、操作和写入Excel 2007 (.xlsx&#xff0c; .xlsm)文件&#xff0c;是基于OpenXML封装的&#xff0c;让开发人员无需了解OpenXML API底层API&#xf…

阿里云今年服务器是真便宜,看看哪些云服务器值得买!

2023年双十一&#xff0c;阿里云推出了一项令人惊喜的独家优惠活动&#xff01;在这次活动中&#xff0c;阿里云开放了老用户购买权限&#xff0c;以超低的价格购买云服务器ECS经济型e实例。这款服务器配置了2核2G内存、3M固定带宽和40G ESSD entry系统盘。而且&#xff0c;更棒…