news 2026/4/15 17:53:24

Python——for循环的嵌套

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python——for循环的嵌套

想学习 Python 中 for 循环的嵌套用法,我会通过通俗易懂的讲解和多个实用案例,帮你理解嵌套 for 循环的核心逻辑和应用场景,尤其适合编程新手快速掌握。

一、嵌套 for 循环的核心概念

嵌套 for 循环就是在一个 for 循环(外层循环)的代码块中,再编写另一个 for 循环(内层循环)。

  • 外层循环每执行一次,内层循环会完整执行一轮。
  • 可以把外层循环想象成 “行”,内层循环想象成 “列”,非常适合处理二维结构(如表格、矩阵)或需要多层遍历的场景。

二、基础案例:打印矩形(入门级)

这是最直观的嵌套循环案例,外层循环控制行数,内层循环控制每行的列数。

python

# 嵌套for循环打印3行5列的星号矩形 # 外层循环:控制行数(3行) for i in range(3): # 内层循环:控制每行的列数(5列) for j in range(5): # end="" 表示打印后不换行,让星号在同一行 print("*", end="") # 内层循环结束后,换行(开始下一行) print()
运行结果:

plaintext

***** ***** *****
代码解释:
  • 外层循环i in range(3):i 依次取 0、1、2,对应 3 行;
  • 每次外层循环执行时,内层循环j in range(5)会完整执行 5 次(j 取 0-4),打印 5 个*
  • 内层循环结束后执行print(),实现换行,开始下一行的打印。

三、进阶案例 1:打印九九乘法表(经典应用)

九九乘法表是嵌套 for 循环的经典场景,外层循环控制乘数,内层循环控制被乘数。

python

# 打印九九乘法表 # 外层循环:控制行数(1-9) for i in range(1, 10): # 内层循环:控制每行的列数(1到当前行数i) for j in range(1, i+1): # 格式化输出:{j}×{i}={j*i},保证对齐 print(f"{j}×{i}={j*i}", end="\t") # 每行结束后换行 print()
运行结果:

plaintext

1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 ... 1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
代码解释:
  • 外层循环i in range(1,10):i 从 1 到 9,代表乘法表的 “行号”(也是第二个乘数);
  • 内层循环j in range(1, i+1):j 从 1 到 i,代表每行的 “列号”(第一个乘数),保证每行的列数等于行数;
  • end="\t":用制表符分隔每个乘法式,让格式更整齐。

四、进阶案例 2:遍历二维列表(实战场景)

嵌套 for 循环最常用的实战场景是遍历二维列表(列表中的元素也是列表),比如处理表格数据。

python

# 定义一个二维列表(3行4列,模拟班级成绩表) scores = [ [90, 85, 95, 88], # 第1个学生的4门成绩 [78, 82, 80, 91], # 第2个学生的4门成绩 [92, 89, 79, 94] # 第3个学生的4门成绩 ] # 遍历二维列表,计算每个学生的总分 # 外层循环:遍历每个学生的成绩列表 for index, student_score in enumerate(scores): total = 0 # 初始化每个学生的总分 # 内层循环:遍历当前学生的每门成绩 for score in student_score: total += score # 累加每门成绩 # 输出结果 print(f"第{index+1}个学生的总分:{total}")
运行结果:

plaintext

第1个学生的总分:358 第2个学生的总分:331 第3个学生的总分:354
代码解释:
  • enumerate(scores):同时获取学生的索引(index)和成绩列表(student_score),方便标注 “第几个学生”;
  • 外层循环遍历每个学生的成绩列表,内层循环遍历该学生的每门成绩并累加,最终得到总分。

总结

  1. 嵌套 for 循环的核心逻辑:外层循环执行 1 次,内层循环完整执行一轮,适合处理 “行 + 列” 的二维结构。
  2. 常见应用场景:打印图形(矩形、乘法表)、遍历二维列表 / 矩阵、处理多层数据(如商品分类下的商品列表)。
  3. 注意事项:嵌套层数不宜过多(一般 2-3 层),否则代码可读性差;内层循环的变量名要与外层区分(如 i/j、row/col),避免混淆。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 10:35:48

边缘计算预备:在云端快速验证物体识别模型后再移植到终端

边缘计算预备:在云端快速验证物体识别模型后再移植到终端 作为一名嵌入式工程师,我最近在开发一个智能物体识别系统,计划最终部署到边缘设备上。但在开发过程中,频繁在本地和云端切换环境验证模型效果,严重影响了工作效…

作者头像 李华
网站建设 2026/4/8 19:09:15

Proteus 8 Professional下载常见问题深度剖析及解决方案

为什么你总是下不好 Proteus?一文讲透下载、安装与部署的真正门道 作为一名长期从事嵌入式教学和电子设计自动化(EDA)工具推广的技术博主,我几乎每天都会在论坛、QQ群或私信里看到类似的问题: “Proteus 8 Professio…

作者头像 李华
网站建设 2026/4/10 9:12:16

实验室教学管理|基于springboot 实验室教学管理系统(源码+数据库+文档)

实验室教学管理 目录 基于springboot vue美食分享系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue实验室教学管理系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/3/30 12:16:53

幼儿园管理系统|基于springboot 幼儿园管理系统(源码+数据库+文档)

幼儿园管理 目录 基于springboot vue幼儿园管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue幼儿园管理系统 一、前言 博主介绍&#xff1a…

作者头像 李华
网站建设 2026/4/14 0:28:06

配置文件与项目初始化参数绑定操作指南

配置即代码:如何让嵌入式系统“听懂”你的配置文件?你有没有遇到过这样的场景?客户临时要求把音频功放的默认增益从0dB调到6dB,而设备已经出厂。你翻出固件代码,改了个常量,重新编译、烧录、测试……一整天…

作者头像 李华
网站建设 2026/4/1 23:49:48

ms-swift支持AQLM与HQQ量化方案进一步压缩模型体积

ms-swift支持AQLM与HQQ量化方案进一步压缩模型体积 在大模型落地日益深入的今天,一个现实问题正不断凸显:越强大的模型,部署成本越高。Qwen3-7B、Llama-3-8B 这类主流大语言模型虽然能力出众,但其 FP16 格式动辄 14GB 以上的显存占…

作者头像 李华