【Python 循环嵌套】

在 Python 中,循环嵌套是指在一个循环体内再包含另一个完整的循环结构。这种结构常用于处理多维数据、矩阵操作、网格遍历或需要分层重复的场景。以下是详细说明和示例:


一、基本语法

for 外部循环变量 in 外部序列:
    # 外部循环代码块
    for 内部循环变量 in 内部序列:
        # 内部循环代码块

while 外部条件:
    # 外部循环代码块
    while 内部条件:
        # 内部循环代码块

二、常见应用场景

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

输出:

1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
...
2. 遍历二维列表(矩阵)
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix:
    for element in row:
        print(element, end=" ")
    print()

输出:

1 2 3 
4 5 6 
7 8 9 
3. 生成组合(如密码破解)
chars = ['a', 'b', 'c']
nums = [1, 2, 3]

for char in chars:
    for num in nums:
        print(f"{char}{num}")

输出:

a1
a2
a3
b1
b2
b3
...

三、控制流程技巧

1. 提前终止循环
  • break: 立即退出当前层循环
  • continue: 跳过当前迭代,进入下一次循环
for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            break  # 仅跳出内层循环
        print(f"({i},{j})")

输出:

(0,0)
(0,1)
(0,2)
(1,0)
(2,0)
(2,1)
(2,2)
2. 修改循环变量(谨慎使用)
i = 0
while i < 3:
    j = 0
    while j < 3:
        print(f"({i},{j})")
        j += 1
        if j == 2:
            i += 1  # 修改外层循环变量
    i += 1

四、性能注意事项

  1. 时间复杂度:嵌套循环的时间复杂度通常为 O(n²) 或更高,需谨慎处理大数据量
  2. 优化建议
    • 尽量减少内层循环的计算量
    • 使用生成器表达式替代部分嵌套循环
    • 考虑使用 itertools.product 简化组合生成

五、经典练习题

  1. 打印直角三角形星号图案:
    *
    **
    ***
    ****
    
  2. 找出二维列表中的最大值
  3. 实现简单的井字棋游戏板遍历

通过合理使用循环嵌套,可以高效解决许多需要分层处理的编程问题。实际开发中需注意代码可读性,避免过度嵌套(建议不超过3层)。

六、经典实例——使用了嵌套循环输出2~100之间的素数

以下是使用嵌套循环输出2~100之间素数的Python代码:

for num in range(2, 101):          # 外层循环遍历2~100的所有数
    is_prime = True                 # 假设当前数是素数
    for i in range(2, num):         # 内层循环检查2到num-1之间的所有数
        if num % i == 0:            # 发现能整除的数
            is_prime = False        # 标记为非素数
            break                   # 提前退出内层循环
    if is_prime:                    # 如果保持素数标记
        print(num)                  # 输出素数

代码解释:

  1. 外层循环:遍历2到100之间的每个数字num
  2. 初始化标记:每次循环开始时假设num是素数(is_prime = True
  3. 内层循环:检查2到num-1之间的所有数字:
    • 如果发现任何数字能整除num,立即将is_prime设为False并终止内层循环
  4. 输出结果:如果经过内层循环验证后is_prime仍为True,则输出该素数

优化建议(可选):

虽然题目未要求优化,但可以改进内层循环范围以提高效率:

for num in range(2, 101):
    is_prime = True
    # 优化:只需检查到平方根即可(取整后+1保证覆盖)
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(num)

输出结果:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

这个程序通过嵌套循环结构,外层控制待检测数字,内层进行素数验证,最终输出2~100之间的所有素数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值