pin_drop当前位置:知识文库 ❯ 图文

Python循环嵌套 - for和while嵌套使用指南

概述

循环嵌套是指在一个循环内部再放置一个循环。外层循环每执行一次,内层循环完整执行一遍。循环嵌套常用于处理二维数据、生成组合和打印图案等场景。


语法

代码示例

for i in outer_iterable:
    for j in inner_iterable:
        statement(s)

基本用法

嵌套 for 循环

代码示例

for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i}×{j}={i*j}", end="\t")
    print()

输出:

代码示例

1×1=1	1×2=2	1×3=3	
2×1=2	2×2=4	2×3=6	
3×1=3	3×2=6	3×3=9	

嵌套 while 循环

代码示例

i = 1
while i <= 3:
    j = 1
    while j <= 3:
        print(f"({i},{j})", end=" ")
        j += 1
    print()
    i += 1

九九乘法表

代码示例

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

输出:

代码示例

1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
...(以此类推)

打印图案

直角三角形

代码示例

for i in range(1, 6):
    for j in range(i):
        print("*", end="")
    print()

输出:

代码示例

*
**
***
****
*****

等腰三角形

代码示例

n = 5
for i in range(1, n + 1):
    print(" " * (n - i) + "*" * (2 * i - 1))

输出:

代码示例

    *
   ***
  *****
 *******
*********

常见应用场景

遍历二维列表

代码示例

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for element in row:
        print(element, end=" ")
    print()

生成组合

代码示例

colors = ["红", "绿", "蓝"]
sizes = ["S", "M", "L"]
for color in colors:
    for size in sizes:
        print(f"{color}-{size}")

注意事项

⚠️ 性能问题:嵌套循环的时间复杂度是 O(n²) 或更高,层数越多效率越低。

⚠️ break 只跳出一层:内层 break 只跳出内层循环,不影响外层。

⚠️ 避免过深嵌套:超过3层嵌套可读性差,应考虑重构。


小结

  • 循环嵌套是循环内部再放置循环

  • 外层每执行一次,内层完整执行一遍

  • 常用于二维数据、图案打印、组合生成

  • 注意性能和可读性,避免过深嵌套


练习题

练习1

使用嵌套循环打印一个 5×5 的数字方阵,数字从 1 到 25 按行排列。

练习2

使用嵌套循环找出 100 以内的所有素数,外层循环遍历数字,内层循环检查是否能整除。

常见问题

嵌套循环的执行顺序是怎样的?

外层循环每执行一次,内层循环就会完整地从头到尾执行一遍。例如外层循环3次、内层循环4次,内层循环体总共会执行12次。

break 在嵌套循环中会跳出几层?

break 只能跳出当前所在的那一层循环。内层循环中的 break 只跳出内层循环,不影响外层循环的继续执行。

嵌套循环的性能问题如何解决?

嵌套循环的时间复杂度是 O(n²) 或更高。可以通过减少数据规模、使用更高效的数据结构(如字典、集合)、或者算法优化来降低时间复杂度。

什么情况下应该使用嵌套循环?

处理二维数据(如矩阵、表格)、生成组合(如笛卡尔积)、打印图案、多层遍历时使用嵌套循环是最自然的选择。

标签: Python 循环嵌套 for循环 流程控制 九九乘法表 Python基础

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python pass语句 - 空操作占位符使用 下一篇: Python循环else子句 - for-else和while-else使用指南

poll相关推荐