循环是编程中重复执行代码块的核心结构,Python 提供了 for
和 while
两种循环语句。以下是详细讲解:
一、for
循环(类似于java里面的增强for循环,都是用于遍历可迭代对象中的元素,但是底层不一样)
1. 基础语法
遍历可迭代对象(列表、字符串、字典、元组、集合、文件等):
for 变量 in 可迭代对象:
# 循环体代码
示例:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 输出:apple → banana → cherry
2. range()
函数
生成整数序列,常用于控制循环次数:
for i in range(start, end, step):
# 循环体
- 参数:
start
:起始值(默认 0)end
:结束值(不包含)step
:步长(默认 1)
示例:
for i in range(3): # 0,1,2
print(i)
for i in range(2, 6): # 2,3,4,5
print(i)
for i in range(1, 10, 2): # 1,3,5,7,9
print(i)
3. 遍历字典
- 遍历键(默认行为):
person = {"name": "Alice", "age": 30} for key in person: print(key) # 输出:name → age
- 遍历键值对:
for key, value in person.items(): print(f"{key}: {value}")
4. enumerate()
函数
同时获取索引和值:
for index, value in enumerate(可迭代对象):
# 使用 index 和 value
示例:
colors = ["red", "green", "blue"]
for idx, color in enumerate(colors):
print(f"索引 {idx} 的颜色是 {color}")
二、while
循环
1. 基础语法
重复执行直到条件不满足:
while 条件表达式:
# 循环体代码
示例:
count = 0
while count < 3:
print(count)
count += 1
# 输出:0 → 1 → 2
2. 无限循环与退出
- 无限循环(需谨慎使用):
while True: user_input = input("输入 'exit' 退出:") if user_input == "exit": break
三、循环控制语句
1. break
立即终止整个循环:
for num in [1, 2, 3, 4, 5]:
if num == 3:
break
print(num) # 输出:1 → 2
2. continue
跳过当前循环,进入下一次迭代:
for num in range(5):
if num == 2:
continue
print(num) # 输出:0 → 1 → 3 → 4
3. else
当循环正常结束(未被 break
终止)时执行:
for num in [1, 2, 3]:
print(num)
else:
print("循环完成") # 会执行
for num in [1, 2, 3]:
if num == 2:
break
else:
print("不会执行")
四、高级循环技巧
1. 列表推导式
快速生成列表:
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
2. 生成器表达式
惰性计算,节省内存:
gen = (x**2 for x in range(5))
for num in gen:
print(num)
3. 嵌套循环
处理多维数据:
matrix = [[1, 2], [3, 4]]
for row in matrix:
for num in row:
print(num) # 输出:1 → 2 → 3 → 4
4. zip()
函数
并行遍历多个可迭代对象:
names = ["Alice", "Bob"]
ages = [25, 30]
for name, age in zip(names, ages):
print(f"{name} 年龄 {age}")
五、应用场景
- 遍历数据:处理列表、字典、文件内容等。
- 重复计算:累加、统计、数学运算。
- 交互控制:用户输入验证、菜单系统。
- 生成序列:斐波那契数列、质数筛选。
六、注意事项
- 避免无限循环:确保
while
循环有终止条件。 - 谨慎修改迭代对象:遍历时修改列表可能导致意外结果。
# 错误示例:遍历时删除元素 lst = [1, 2, 3, 4] for num in lst: if num % 2 == 0: lst.remove(num) # 结果可能不符合预期
- 优先使用
for
:相比while
,for
更简洁且不易出错。 - 性能优化:大数据量时,考虑生成器或迭代器。
七、实战示例
示例1:计算阶乘
n = 5
factorial = 1
for i in range(1, n+1):
factorial *= i
print(factorial) # 120
示例2:筛选质数
primes = []
for num in range(2, 20):
for i in range(2, int(num**0.5)+1):
if num % i == 0:
break
else:
primes.append(num)
print(primes) # [2, 3, 5, 7, 11, 13, 17, 19]
总结
for
循环:适合已知迭代次数或遍历容器。while
循环:适合不确定次数的条件循环。- 灵活使用
break
、continue
、else
控制流程。 - 掌握推导式、生成器、
zip()
等高级工具提升效率。
通过合理选择循环结构,可以高效处理重复性任务,是Python编程的核心技能之一!