Python循环结构
目录
一、循环概念
1.1 什么是循环?
循环:是编程中的一种控制结构,它允许我们重复执行某一段代码多次,直到指定的条件不再满足为止。
1.2 循环的作用
1. 减少代码重复
2. 处理批量数据(遍历数组、列表、集合等)
3. 实现迭代算法
4.控制程序流程(满足某个条件一直等待或持续运行)
1.3 循环的分类
for循环(适用于已知循环次数,不清楚循环结束条件)
while循环(适用于知道循环结束和开始条件,但不知道需要循环多少次)
1.4 什么是可迭代对象
可迭代对象(Iterable)是 Python 中一个非常核心的概念。
简单来说,可迭代对象就是任何可以用 for 循环来遍历的对象。
你可以把它想象成一个“容器”或“数据源”,里面装着很多数据,你可以一个接一个地把这些数据取出来使用。
二、while循环
2.1 语法结构
循环变量初始化(i = 0)
while 条件表达式(i < 3):
重复执行的循环体(print("Hello"))
循环变量改变(i += 1)
2.2 语法特点
-
有初始值
-
条件表达式
-
循环变量的自增自减,否则会导致死循环
-
使用条件:循环次数不确定,依靠循环条件控制循环
2.3 循环中的两大关键字
break
break语句用于立即终止当前所在的循环,即使循环条件仍然满足,也会强制跳出循环。
示例:
i = 0
while i < 10:
if i == 5:
break # 当i等于5时,立即终止循环
print(i)
i += 1
# 输出:0 1 2 3 4
continue
continue语句用于跳过当前循环中剩余的代码,直接进入下一次循环的迭代。
示例:
i = 0
while i < 5:
i += 1
if i == 3:
continue # 当i等于3时,跳过本次循环的剩余代码
print(i)
# 输出:1 2 4 5
2.4 循环控制注意事项
break和continue通常和if条件判断结合使用,用于在特定情况下改变循环的正常流程。
注意:
break会完全终止循环,后续的代码不再执行。【另外,如果是循环嵌套(四、循环嵌套)break会结束当前层次的循环并连同嵌套的内部循环一直结束,不影响外层循环】
continue只是跳过本次循环,循环会继续执行下一次迭代。
2.5 避免死循环
在使用while循环时,必须确保循环条件最终能够变为False,否则会导致死循环。
错误示例:
i = 0
while i < 5:
print(i)
# 缺少 i += 1,循环条件永远不会变为False
正确示例:
i = 0
while i < 5:
print(i)
i += 1 # 确保循环变量在每次迭代中改变
适用于可迭代对象:列表、元组、集合、字符串等。
3.1 语法结构
for 变量 in 序列:
循环体
3.2 遍历序列类型
# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 遍历字符串
for char in "Hello":
print(char)
# 遍历元组
numbers = (1, 2, 3)
for num in numbers:
print(num)
3.3 range()函数
range()函数用于生成一个数字序列,常用于控制循环次数。
语法结构:
range(start,stop,step)
start:表示序列从几开始
stop:表示序列的终止边界,但是不包括该值
step:指定两个相邻整数之间的差值(可以是正数,也可以是负数,但是不能为零)
# 生成0-4的序列
for i in range(5):
print(i)
# 指定起始值和结束值
for i in range(2, 6):
print(i)
# 指定步长
for i in range(0, 10, 2):
print(i)
3.4 for循环中的break和continue
break和continue在for循环中同样适用:
# break示例
for i in range(10):
if i == 5:
break
print(i)
# 结果:0 1 2 3 4
# continue示例
for i in range(5):
if i == 2:
continue
print(i)
# 结果:0 1 3 4
四、循环嵌套
4.1 循环嵌套的概念
循环可以嵌套使用,即一个循环内部包含另一个循环:
# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end="\t")
print()
4.2 嵌套循环注意事项
-
内层循环完全执行完毕后,外层循环才会进入下一次迭代
-
可以使用break和continue控制任意层的循环
-
嵌套层数过多会影响代码可读性和性能
4.3 循环和else语句
循环可以搭配else一起使用:
# for循环的else
for i in range(5):
print(i)
else:
print("循环正常结束")
# while循环的else
i = 0
while i < 3:
print(i)
i += 1
else:
print("循环正常结束")
注意:如果循环被break语句终止,else块不会执行。但是continue不会终止循环只是跳过本次循环,所以else块会执行。
五、循环应用实例
5.1 数理统计
# 求数字列表平均值
numbers = [85, 92, 78, 90, 88]
# 用来存储数字之和
total = 0
# 用来存储数字的个数
count = 0
for num in numbers:
total += num
count += 1
average = total / count
print(f"平均分: {average}")
5.2 模式打印
# 打印金字塔图案
n = 5
for i in range(1, n+1):
print(" " * (n-i) + "*" * (2*i-1))
5.3 查找特定元素
# 在列表中查找特定元素
fruits = ["apple", "banana", "cherry", "date"]
target = "cherry"
found = False
for fruit in fruits:
if fruit == target:
found = True
print(f"找到了 {target}")
break
if not found:
print(f"没有找到 {target}")
六、循环优化技巧
6.1 减少内部循环
可以将不变的计算移动到循环外部:
# 优化前(每次循环都调用一次方法,但我们只需要方法计算后的结果,所以没必要在循环中次次调用)
for i in range(1000):
result = some_expensive_function() * i
# 优化后(将方法挪移到循环外,只把方法返回的结果放入循环即可)
temp = some_expensive_function()
for i in range(1000):
result = temp * i
减少函数调用开销;消除冗余计算;提高性能。
6.2 使用列表推导式
对于简单的循环,可以考虑使用列表推导式:
# 传统方式
squares = []
for i in range(10):
squares.append(i**2)
# 列表推导式
squares = [i**2 for i in range(10)]
使用列表推导式的目的:代码简介优雅;可读性更高;性能更好;避免变量污染;支持条件筛选
6.3 提前终止循环
当满足条件时及时终止循环,避免不必要的迭代:
# 查找第一个满足条件的元素
numbers = [1, 3, 5, 7, 9, 2, 4, 6, 8]
for num in numbers:
if num % 2 == 0: # 找到第一个偶数
print(f"第一个偶数是: {num}")
break
更多推荐

所有评论(0)