💬欢迎学习本节课,代码运行报错、知识点看不懂,可以在评论区留言,一起交流学习!
嵌套循环:一个循环的循环体内部,完整包含另外一个循环,就像俄罗斯套娃,大娃娃里面套小娃娃。
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
二、常见嵌套循环代码案例外层控制一共多少行,内层控制每行打印多少个*;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只会作用于它所在的那一层循环,不会影响外层循环。
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:continueprint(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 = Truebreak #跳出内层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:breakprint(f"j={j}")else:print("内层循环正常结束")else:print("外层循环正常结束")
五、嵌套循环特殊知识点&易错点(必看)内层循环变量会覆盖外层,直接造成逻辑错乱。
#错误示范for i in range(3):for i in range(2): #内层i覆盖外层i,严重bugprint(i)
✅规范写法:外层i,内层j/k;或者row行、col列语义化命名。内层循环、内层循环体、换行print()缩进层级不能错,缩进错逻辑完全错乱。
外层循环n次,内层m次,总执行次数 = n × m。
外层1000次,内层1000次,内部代码要跑100万次,程序会变慢。
实际开发尽量避免3层及以上深度嵌套;大数据场景优先用字典、集合替代嵌套查找,提升速度。
使用嵌套循环打印4行,每行输出4个#符号。
有二维列表data = [[2,4,6],[8,10,12],[14,16,18]],嵌套循环遍历全部元素,只打印大于10的数字。
编写嵌套循环,当内层循环变量等于4的时候,利用标志变量,终止内外两层全部循环。
💬练习遇到报错、看不懂代码,欢迎在评论区留言提问,巩固知识点!