在 Python 中,for 循环是核心的迭代工具,用于遍历可迭代对象(如列表、字符串、字典、元组、集合、range 对象等),执行重复的代码逻辑。以下是 for 循环的完整用法和示例:
一、基本语法
python
运行
for 变量 in 可迭代对象:
循环体代码(缩进)
# 循环结束后执行的代码(无缩进)
变量:每次迭代从可迭代对象中取出的元素(自定义命名)。可迭代对象:可以逐个取出元素的对象(如列表、字符串、range 等)。缩进:Python 用缩进(4 个空格 / 1 个 Tab)区分循环体,必须严格遵守。
二、常见使用场景
1. 遍历列表 / 元组(最常用)
遍历列表 / 元组的每个元素:
python
运行
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃 {fruit}")
# 遍历元组
nums = (1, 2, 3)
for num in nums:
print(num * 2) # 输出:2 4 6
2. 遍历字符串(按字符)
字符串是字符的可迭代对象,逐个遍历字符:
python
运行
text = "Python"
for char in text:
print(char.upper()) # 输出:P Y T H O N
3. 遍历字典
字典有 3 种遍历方式(键、值、键值对):
python
运行
person = {"name": "小明", "age": 18, "city": "北京"}
# 遍历键(默认)
for key in person:
print(key) # 输出:name age city
# 遍历值
for value in person.values():
print(value) # 输出:小明 18 北京
# 遍历键值对(用 items())
for key, value in person.items():
print(f"{key}: {value}") # 输出:name: 小明 age: 18 city: 北京
4. 用 range () 生成数字序列
range() 生成整数序列,常用于指定循环次数:
range(n):0 ~ n-1(如range(3)→ 0,1,2)range(start, end):start ~ end-1(如range(2,5)→ 2,3,4)range(start, end, step):步长 step(如range(1,10,2)→ 1,3,5,7,9)
python
运行
# 循环 5 次(0-4)
for i in range(5):
print(i) # 输出:0 1 2 3 4
# 1-10 的偶数
for i in range(2, 11, 2):
print(i) # 输出:2 4 6 8 10
# 倒序遍历(步长为负)
for i in range(10, 0, -2):
print(i) # 输出:10 8 6 4 2
5. 遍历列表的同时获取索引(enumerate ())
enumerate() 可返回索引 + 元素,解决 “需要下标” 的场景:
python
运行
fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
print(f"第 {index+1} 个水果是:{fruit}")
# 输出:
# 第 1 个水果是:苹果
# 第 2 个水果是:香蕉
# 第 3 个水果是:橙子
三、循环控制语句
1. break:终止整个循环
遇到 break 立即退出循环,不再执行后续迭代:
python
运行
nums = [1, 2, 3, 4, 5]
for num in nums:
if num == 3:
break # 遇到3终止循环
print(num) # 输出:1 2
2. continue:跳过当前迭代
跳过本次循环剩余代码,直接进入下一次迭代:
python
运行
nums = [1, 2, 3, 4, 5]
for num in nums:
if num == 3:
continue # 跳过3,直接下一次循环
print(num) # 输出:1 2 4 5
3. else:循环正常结束后执行
仅当循环没有被 break 终止时,才执行 else 块:
python
运行
nums = [1, 2, 3, 4, 5]
for num in nums:
print(num)
else:
print("循环正常结束!") # 会执行
# 被break终止时,else不执行
for num in nums:
if num == 3:
break
print(num)
else:
print("循环正常结束!") # 不执行
四、嵌套 for 循环
循环内部嵌套另一个循环,常用于多维数据(如二维列表、矩阵):
python
运行
# 打印九九乘法表(简化版)
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end=" ")
print() # 换行
五、遍历可迭代对象的进阶技巧
1. 列表推导式(简化 for 循环)
用一行代码生成列表,比传统 for 循环更简洁高效:
python
运行
# 传统方式
nums = [1, 2, 3, 4]
new_nums = []
for num in nums:
new_nums.append(num * 2)
# 列表推导式
new_nums = [num * 2 for num in nums]
print(new_nums) # 输出:[2,4,6,8]
# 带条件的列表推导式
new_nums = [num * 2 for num in nums if num % 2 == 0]
print(new_nums) # 输出:[4,8]
2. 遍历集合 / 生成器
python
运行
# 遍历集合(无序)
s = {1, 2, 3}
for num in s:
print(num)
# 遍历生成器(节省内存)
gen = (x for x in range(3)) # 生成器表达式
for num in gen:
print(num) # 输出:0 1 2
六、注意事项
-
迭代过程中修改可迭代对象(如列表)可能导致异常,建议先复制:
python
运行
nums = [1, 2, 3] # 错误:遍历中删除元素,导致漏遍历 # for num in nums: # nums.remove(num) # 正确:遍历副本 for num in nums.copy(): nums.remove(num) print(nums) # 输出:[] -
for循环不能直接修改迭代变量来改变原可迭代对象(如列表元素),需通过索引:python
运行
nums = [1, 2, 3] # 错误:仅修改变量,原列表不变 for num in nums: num = num * 2 # 正确:通过索引修改 for i in range(len(nums)): nums[i] = nums[i] * 2 print(nums) # 输出:[2,4,6]
总结
Python 的 for 循环是灵活的迭代工具,核心是 “遍历可迭代对象”,结合 break/continue/else、嵌套循环、列表推导式等,可满足绝大多数循环场景。重点掌握:
- 遍历不同类型的可迭代对象(列表、字典、range 等);
- 循环控制语句的使用;
- 列表推导式简化循环代码;
- 迭代时避免修改原可迭代对象的坑。