简单分享 for循环,从基础到高级

1. 基础篇:Hello, For Loop!

想象一下,你想给班上的每位同学发送“Hello!”,怎么办?那就是for循环啦,

eg:首先有个名字的列表,for循环取出,分别打印

names = ["Alice", "Bob", "Charlie"]
for name in names:
    print(f"Hello, {name}!")

2. 计数助手:enumerate来帮忙

给每个同学编号,是不是更正式点?enumerate函数能助你一臂之力:

for num,name in enumerate(names):

   print(f"{i+1}. Hello, {name}!")

3. 列表生成式:简洁之美

想要快速创建一个新列表,比如每个名字后面加个"!"?

excited_names = [f"{name}!" for name in names]
print(excited_names)

4. 范围函数range的魔法

想数数?range函数是你的数字精灵:

for i in range(9):  # 从0到8,数头不数尾
    print(i)

5. 嵌套循环:编织复杂图案

记得小时候的九九乘法表吗?Python帮你轻松绘制:俄罗斯套娃,一层又一层。

for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}x{i}={i*j}", end="\t")
    print()  # 换行

6. break和continue:控制流的指挥棒

遇到不喜欢的同学,直接跳过?continue出场:

for name in names:
    if name == "Bob":
        continue
    print(f"Hello, {name}!")

7. else子句:循环的附加惊喜

你知道吗?for循环后还能跟个else?如果循环正常结束,没有遇到breakelse里的代码就执行。

for i in range(5):
    if i == 3:
        break
else:
    print("循环顺利完成,没被break掉!")

8. 使用zip:并行处理

有两组数据要一起处理?zip函数让你左右开弓:zip就像一条神奇的纽带,把列表绑在一起

names = ["Alice", "Bob", "Charlie"]
ages = [16, 17, 20]
for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")

9. 遍历字典:键值对的舞蹈

字典里的秘密,for也能探查:通过.items(),每个键值对都跳起了双人舞。

my_dict = {"pear": 5, "banana": 9, "orange": 98}
for key, value in my_dict.items():
    print(f"I have {value} {key}(s).")

10. 逆序循环:时光倒流

想反着数数,或者倒着念名字?用reversed函数:时光倒流,从最后一个同学开始告别。

for name in reversed(names):
    print(f"Goodbye, {name}!")

11. 迭代器与next函数:深海探险

知道吗?所有可迭代对象都可以用迭代器来玩:iter()制造潜水艇,next()带你潜入下一个宝藏。

it = iter(names)
print(next(it))  
print(next(it))  

12. 高级技巧:列表推导结合条件判断

结合条件,快速筛选出喜欢的名字:

vowel_start_names = [name for name in names if name[0].lower() in 'aeiou']
print(vowel_start_names)

13. 生成器表达式:轻量级迭代神器

生成器是Python的一大特色,非常适合处理大数据流。

# 生成所有小于10的平方数,但不一次性加载到内存中
squares = (i**2 for i in range(10))
for square in squares:
    print(square)

14. 列表推导与循环嵌套的高级应用

当你需要处理多维数据时,嵌套的列表推导可以非常直观:这段代码仿佛是在进行空间变换,将矩阵沿主对角线翻转。

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 转置矩阵
transposed = [[row[i] for row in matrix] for i in range(3)]
for row in transposed:
    print(row)

15. 利用itertools:循环的高级工具箱

Python的itertools模块提供了强大的迭代工具。比如,你想交替合并两个列表:

itertools就像一个瑞士军刀,里面藏着各种循环处理的利器。

from itertools import chain

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

# 使用chain交替合并
merged = list(chain.from_iterable(zip(list1, list2)))
print(merged)  # 结果: [1, 'a', 2, 'b', 3, 'c']

16. 循环效率优化:理解迭代原理

了解Python的迭代机制能帮助你写出更高效的代码。例如,避免在循环内部进行列表的append操作,特别是在循环体很大时,可以考虑预分配列表大小或使用列表生成式。

17. 循环与异常处理:稳健的循环

在处理可能抛出异常的循环时,使用try-except可以增加代码的健壮性,即使遇到除以零的错误,循环也不会终止,而是优雅地处理异常,eg:

numbers = [1, 0, 3, 4]
for num in numbers:
    try:
        print(1 / num)
    except ZeroDivisionError:
        print("Oops! Can't divide by zero.")

好了,今天的分享就到这里了,有喜欢的哥哥姐姐们,欢迎大家留言讨论^_^如果本文对你有帮助,请点赞、转发哦

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

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

相关文章

bigNumber的部分使用方法与属性

场景:最近做IoT项目的时候碰到一个问题,涉及到双精度浮点型的数据范围的校验问题。业务上其实有三种类型:int、float和double类型三种。他们的范围分别是: //int int: [-2147483648, 2147483647],//float float: [-3402823466385…

PHP7源码结构

PHP7程序的执行过程 1.PHP代码经过词法分析转换为有意义的Token; 2.Token经过语法分析生成AST(Abstract Synstract Syntax Tree,抽象语法树); 3.AST生成对应的opcode,被虚拟机执行。 源码结构&#xff1…

一切为了安全丨2024中国应急(消防)品牌巡展武汉站成功召开!

消防品牌巡展武汉站 6月28日,由中国安全产业协会指导,中国安全产业协会应急创新分会、应急救援产业网联合主办,湖北消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-武汉站成功举办。该巡展旨在展示中国应急(消防&am…

qt QTreeView的简单使用(多级子节点)

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);setWindowTitle("QTreeView的简单使用");model new QStandardItemModel;model->setHorizontalHeaderLabels(QStringList() << "left&q…

[leetcode]longest-arithmetic-subsequence-of-given-difference. 最长定差子序列

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int longestSubsequence(vector<int> &arr, int difference) {int ans 0;unordered_map<int, int> dp;for (int v: arr) {dp[v] dp[v - difference] 1;ans max(ans, dp[v]);}return ans…

Qt源码分析:窗体绘制与响应

作为一套开源跨平台的UI代码库&#xff0c;窗体绘制与响应自然是最为基本的功能。在前面的博文中&#xff0c;已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析&#xff0c;并捎带阐述了窗体响应相关的内容。因此&#xff0c;本文着重分析Qt中窗体绘制相关的内容…

如何完成域名解析验证

一&#xff1a;什么是DNS解析&#xff1a; DNS解析是互联网上将人类可读的域名&#xff08;如www.example.com&#xff09;转换为计算机可识别的IP地址&#xff08;如192.0.2.1&#xff09;的过程&#xff0c;大致遵循以下步骤&#xff1a; 查询本地缓存&#xff1a;当用户尝…

顺序串算法库构建

学习贺利坚老师顺序串算法库 数据结构之自建算法库——顺序串_创建顺序串s1,创建顺序串s2-CSDN博客 本人详细解析博客 串的概念及操作_串的基本操作-CSDN博客 版本更新日志 V1.0: 在贺利坚老师算法库指导下, 结合本人详细解析博客思路基础上,进行测试, 加入异常弹出信息 v1.0补…

已解决java.awt.geom.NoninvertibleTransformException:在Java2D中无法逆转的转换的正确解决方法,亲测有效!!!

已解决java.awt.geom.NoninvertibleTransformException&#xff1a;在Java2D中无法逆转的转换的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查缩放因子 修改后的缩放变换 …

关键路径——C语言(理论)

关键路径&#xff0c;是项目网络中从起始事件到终止事件的最长路径&#xff0c;决定了项目的最短完成时间。 关键路径中的任务没有任何可调整的余地&#xff0c;如果任何一个任务被延迟&#xff0c;整个项目的完成时间也会被延迟。 假设我们现在有一个图&#xff1a;把图的边…

【CH32V305FBP6】USBD HS 虚拟串口分析

文章目录 前言分析端点 0USBHS_UIS_TOKEN_OUT 端点 2USBHS_UIS_TOKEN_OUTUSBHS_UIS_TOKEN_IN 前言 虚拟串口&#xff0c;端口 3 单向上报&#xff0c;端口 2 双向收发。 分析 端点 0 USBHS_UIS_TOKEN_OUT 设置串口参数&#xff1a; 判断 USBHS_SetupReqCode CDC_SET_LIN…

从零开始实现大语言模型(一):概述

1. 前言 大家好&#xff0c;我是何睿智。我现在在做大语言模型相关工作&#xff0c;我用业余时间写一个专栏&#xff0c;给大家讲讲如何从零开始实现大语言模型。 从零开始实现大语言模型是了解其原理及领域大语言模型实现路径的最好方法&#xff0c;没有之一。已有研究证明&…

Windows10录屏,教你3个方法,简单快速录屏

“我的电脑系统是Windows10的系统&#xff0c;今晚要进行线上开会&#xff0c;但我实在有事没办法参加会议&#xff0c;想把会议的内容录制下来方便我后续观看。但却找不到电脑录屏功能在哪里打开&#xff1f;求助一下&#xff0c;谁能帮帮我&#xff1f;” 在数字化时代&…

mysql 命令 —— 查看表信息(show table status)

查询表信息&#xff0c;如整个表的数据量大小、表的索引占用空间大小等 1、查询某个库下面的所有表信息&#xff1a; SHOW TABLE STATUS FROM your_database_name;2、查询指定的表信息&#xff1a; SHOW TABLE STATUS LIKE your_table_name;如&#xff1a;Data_length 显示表…

闲聊 .NET Standard

前言 有时候&#xff0c;我们从 Nuget 下载第三方包时&#xff0c;会看到这些包的依赖除了要求 .NET FrameWork、.NET Core 等的版本之外&#xff0c;还会要求 .NET Standard 的版本&#xff0c;比如这样&#xff1a; 这个神秘的 .NET Standard 是什么呢&#xff1f; .NET St…

从零开始搭建spring boot多模块项目

一、搭建父级模块 1、打开idea,选择file–new–project 2、选择Spring Initializr,选择相关java版本,点击“Next” 3、填写父级模块信息 选择/填写group、artifact、type、language、packaging(后面需要修改)、java version(后面需要修改成和第2步中版本一致)。点击“…

工业触摸一体机优化MES应用开发流程

工业触摸一体机在现代工业生产中扮演着至关重要的角色&#xff0c;它集成了智能触摸屏和工业计算机的功能&#xff0c;广泛应用于各种生产场景中。而制造执行系统&#xff08;MES&#xff09;作为工业生产管理的重要工具&#xff0c;对于提高生产效率、降低成本、优化资源利用具…

力扣hot100-普通数组

文章目录 题目&#xff1a;最大子数组和方法1 动态规划方法2 题目&#xff1a;合并区间题解 题目&#xff1a;最大子数组和 原题链接&#xff1a;最大子数组和 方法1 动态规划 public class T53 {//动态规划public static int maxSubArray(int[] nums) {if (nums.length 0…

C++基础知识-编译相关

记录C语言相关的基础知识 1 C源码到可执行文件的四个阶段 预处理(.i)、编译(.s)、汇编(.obj)、链接。 1.1 预处理 预处理阶段&#xff0c;主要完成宏替换、文件展开、注释删除、条件编译展开、添加行号和文件名标识&#xff0c;输出.i/.ii预处理文件。 宏替换&#xff0c;…

【UML用户指南】-26-对高级行为建模-状态图

目录 1、概念 2、组成结构 3、一般用法 4、常用建模技术 4.1、对反应型对象建模 一个状态图显示了一个状态机。在为对象的生命期建模中 活动图展示的是跨过不同的对象从活动到活动的控制流 状态图展示的是单个对象内从状态到状态的控制流。 在UML中&#xff0c;用状态图…