导航菜单

  • 1.Python介绍
  • 2.Python解释器
  • 3.安装Python
  • 4.VSCode开发Python
  • 5.print
  • 6.进制
  • 7.编码
  • 8.Unicode2UTF8
  • 9.整数类型
  • 10.字符串类型
  • 11.布尔类型
  • 12.变量与内存
  • 13.浮点类型
  • 14.注释
  • 15.if条件
  • 16.while循环
  • 17.运算符
  • 18.输入
  • 19.列表
  • 20.元组
  • 21.集合
  • 22.字典
  • 23.for循环
  • 23.1 for 循环是什么?
  • 23.2 基本语法
  • 23.3 遍历集合
    • 23.3.1 列表
    • 23.3.2 字典
  • 23.4 range():按次数或索引循环
  • 23.5 enumerate():同时拿索引和元素
  • 23.6 break 与 continue
  • 23.7 zip():并行遍历多个序列
  • 23.8 列表推导式
  • 23.9 常见注意点
  • 23.10 项目开发要点
  • 23.11 总结

23.1 for 循环是什么? #

for 循环用于遍历可迭代对象(列表、字典、字符串、文件行等),对每个元素执行同一段代码。项目里处理列表、字典、查询结果时几乎每天都会用到。

for fruit in ["apple", "banana", "cherry"]:
    print(fruit)

23.2 基本语法 #

for 变量 in 可迭代对象:
    # 循环体(缩进 4 空格)

23.3 遍历集合 #

23.3.1 列表 #

users = ["Alice", "Bob", "Charlie"]
for user in users:
    print(user)

23.3.2 字典 #

项目里最常用的是 items(),同时拿到键和值:

person = {"name": "Alice", "age": 30, "city": "Beijing"}

for key, value in person.items():
    print(f"{key}: {value}")

只需键或值时:

for key in person:              # 默认遍历键
    print(key)

for value in person.values():
    print(value)

字符串、元组、集合同理:for x in obj。

23.4 range():按次数或索引循环 #

range() 用于生成一个指定范围的整数序列,常用来控制 for 循环次数或获得索引。

  • range(stop)
    只传一个参数时,从 0 开始到 stop(不包括 stop),步长为 1。 例如:range(5) 得到 0, 1, 2, 3, 4

  • range(start, stop)
    从 start 开始,到 stop(不包括 stop),步长为 1。 例如:range(2, 6) 得到 2, 3, 4, 5

  • range(start, stop, step)
    从 start 开始,到 stop(不包括 stop),步长为 step。 例如:range(0, 10, 2) 得到 0, 2, 4, 6, 8

注意:

  • stop 总是“开区间”,不包含在结果序列内。
  • step 可以为负数,表示倒序遍历。例如:range(10, 0, -2) 得到 10, 8, 6, 4, 2
# range(stop)          → 0 到 stop-1
for i in range(5):
    print(i)             # 0 1 2 3 4

# range(start, stop)   → start 到 stop-1
for i in range(2, 6):
    print(i)             # 2 3 4 5

# range(start, stop, step)
for i in range(0, 10, 2):
    print(i)             # 0 2 4 6 8

需要下标访问列表时,更推荐下面的 enumerate(),而不是 range(len(lst))。

23.5 enumerate():同时拿索引和元素 #

fruits = ["apple", "banana", "cherry"]

for index, fruit in enumerate(fruits):
    print(index, fruit)

# 从 1 开始编号(展示用)
for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

23.6 break 与 continue #

语句 作用
break 立即结束整个循环
continue 跳过本次剩余代码,进入下一轮
for num in [2, 5, 8, 12, 7]:
    if num > 10:
        print(f"找到: {num}")
        break
    print(f"检查: {num}")

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)    # 只打印奇数

23.7 zip():并行遍历多个序列 #

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]

for name, score in zip(names, scores):
    print(f"{name}: {score}")

23.8 列表推导式 #

用一行从可迭代对象生成新列表,项目里很常见:

numbers = [2, 4, 6, 8, 10]
# 等价于 for 循环 + append
squares = [x ** 2 for x in range(5)]           # [0, 1, 4, 9, 16]
print(squares)
positive = [x for x in numbers if x > 0]       # 带条件过滤
print(positive)

23.9 常见注意点 #

不要在遍历时直接修改正在遍历的列表(会跳过元素):

# 错误
numbers = [2, 4, 6, 8]
for num in numbers:
    if num % 2 == 0:
        numbers.remove(num)

# 正确:用新列表或推导式
numbers = [num for num in numbers if num % 2 != 0]

变量名要有意义:for student in students 优于 for i in l。

23.10 项目开发要点 #

  1. 遍历集合用 for,不要用 while + 下标(除非有特殊需求)
  2. 字典优先 for k, v in d.items(),处理 ORM 字段、JSON、配置时常用
  3. 需要索引用 enumerate(),少用 range(len(lst))
  4. 读文件:for line in open(...) 或 for line_num, line in enumerate(f, 1):
  5. 过滤、映射列表可考虑列表推导式,保持可读即可,不宜嵌套过深
  6. 嵌套循环:二维数据、组合遍历时会用到;注意性能,大数据考虑向量化或数据库层处理

23.11 总结 #

概念 语法 用途
基本循环 for item in collection: 遍历元素
数字序列 range(start, stop, step) 固定次数或数字序列
索引+元素 enumerate(collection) 同时拿索引和值
多序列 zip(a, b) 并行遍历
控制流程 break / continue 提前结束或跳过本次
生成列表 [expr for x in iterable] 简洁地构造新列表
← 上一节 22.字典
下一节 没有下一节 →

访问验证

请输入访问令牌

Token不正确,请重新输入