当前位置:首页>python>第 25 课 Python 嵌套循环

第 25 课 Python 嵌套循环

  • 2026-09-10 03:58:01
第 25 课 Python 嵌套循环

💬欢迎学习本节课,代码运行报错、知识点看不懂,可以在评论区留言,一起交流学习!

一、什么是嵌套循环

嵌套循环:一个循环的循环体内部,完整包含另外一个循环,就像俄罗斯套娃,大娃娃里面套小娃娃。

Python支持多种组合:

1. for 嵌套 for(最常用)

2. for 嵌套 while

3. while 嵌套 for

4. while 嵌套 while

核心执行规则(务必记住)

外层循环执行1次,内层循环要完整跑完全部循环次数,才回到外层,执行外层下一轮。

简单理解:外层管“行数”,内层管“每一行里面要做多少次操作”。

基础语法(for‑for嵌套模板)

for 外层变量 in 外层可迭代对象:    # 外层循环代码        for 内层变量 in 内层可迭代对象:        # 内层循环体,注意双重缩进
基础示例,看懂执行流程:
# 外层i跑2次,内层j跑2次for i in range(1,3):    print(f"===外层循环 i = {i} ===")    for j in range(1,3):        print(f"    内层循环 j = {j}")
输出结果:
===外层循环 i = 1 ===    内层循环 j = 1    内层循环 j = 2===外层循环 i = 2 ===    内层循环 j = 1    内层循环 j = 2
二、常见嵌套循环代码案例

案例1:打印5行5列星号矩形

外层控制一共多少行,内层控制每行打印多少个*;end=" "让print不换行,内层结束后print()实现换行。

# 打印5行,每行5个*for i in range(5):    for j in range(5):        print("*", end=" ")    print() # 内层全部结束,换行
案例2:经典九九乘法表(for‑for嵌套)

外层i控制行,内层j控制列,内层循环范围受外层i控制,range(1,i+1)。

for i in range(1,10):    for j in range(1,i+1):        print(f"{j}×{i}={i*j}", end="\t")    print()
案例3:遍历二维列表(表格数据)

二维列表就是列表里面存放子列表,用嵌套循环取出每一个元素。

matrix = [    [10,20,30],    [40,50,60],    [70,80,90]]# 外层取每一行,内层取行内每一个数字for row in matrix:    for num in row:        print(num, end=" ")    print()
案例4:while嵌套for混合写法
count = 1while count <=3:    print(f"while外层第{count}轮")    for k in range(2):        print(f"    for内层 k={k}")    count +=1
三、嵌套循环中 break 和 continue 的特殊行为(高频坑点)

⚠️重点:break、continue只会作用于它所在的那一层循环,不会影响外层循环。

1. break 只跳出当前内层循环,外层继续跑

for i in range(1,4):    print(f"外层 i={i}")    for j in range(1,4):        if j ==2:            break # 仅终止j的内层循环,i不受影响        print(f"  内层 j={j}")
输出:
外层 i=1  内层 j=1外层 i=2  内层 j=1外层 i=3  内层 j=1
 2. continue 只跳过当前层本轮循环
for i in range(2):    for j in range(1,4):        if j ==2:            continue        print(f"i={i},j={j}")
3. 如何一次性跳出全部多层循环?

Python没有直接break 2这种语法,两种主流解决方案:

方案①:标志变量(新手优先掌握)

found = Falsefor i in range(5):    for j in range(5):        if i ==3 and j ==3:            found = True            break #跳出内层    if found:        break #跳出外层
方案②:封装函数,使用return(项目中常用)
def search():    for i in range(5):        for j in range(5):            if i ==3 and j ==3:                print("找到目标,全部循环结束")                return # return直接退出整个函数,所有循环终止search()
四、嵌套循环搭配 for‑else

每一层循环都可以拥有自己的else,else只属于和它对齐的那一层for。

如果本层循环被break打断 → else不执行

如果本层循环完整跑完 → else执行

for i in range(3):    for j in range(2):        if j ==1:            break        print(f"j={j}")    else:        print("内层循环正常结束")else:    print("外层循环正常结束")
五、嵌套循环特殊知识点&易错点(必看)

1. ❌不要内外层使用一模一样的循环变量名!

内层循环变量会覆盖外层,直接造成逻辑错乱。

#错误示范for i in range(3):    for i in range(2): #内层i覆盖外层i,严重bug                print(i)
✅规范写法:外层i,内层j/k;或者row行、col列语义化命名。

2. 缩进是嵌套循环的生命线

内层循环、内层循环体、换行print()缩进层级不能错,缩进错逻辑完全错乱。

3. 性能问题:嵌套循环运行次数是乘积关系

外层循环n次,内层m次,总执行次数 = n × m。

外层1000次,内层1000次,内部代码要跑100万次,程序会变慢。

实际开发尽量避免3层及以上深度嵌套;大数据场景优先用字典、集合替代嵌套查找,提升速度。

4. 遍历二维列表时,不要在内层循环直接修改原列表,会出现漏元素。

5. 循环变量在循环结束后不会销毁,嵌套结束后变量会保留最后一次循环的值。

六、本节课练习题

题目1(基础)

使用嵌套循环打印4行,每行输出4个#符号。

题目2(中等)

有二维列表data = [[2,4,6],[8,10,12],[14,16,18]],嵌套循环遍历全部元素,只打印大于10的数字。

题目3(拓展)

编写嵌套循环,当内层循环变量等于4的时候,利用标志变量,终止内外两层全部循环。

💬练习遇到报错、看不懂代码,欢迎在评论区留言提问,巩固知识点!

最新文章

随机文章