当前位置:首页>python>Python for循环——遍历的艺术

Python for循环——遍历的艺术

  • 2026-08-22 18:57:47
Python for循环——遍历的艺术

一、什么是 for 循环?

for循环是Python中用于遍历可迭代对象的循环结构。它可以逐个访问序列(如字符串、列表、元组)或其他可迭代对象(如字典、集合)中的每个元素。

fruits = ["苹果", "香蕉", "橙子"]for fruit in fruits:print(fruit)# 输出:# 苹果# 香蕉# 橙子

二、for 循环的基本语法

for 变量 in 可迭代对象:    循环体(对每个元素执行的代码)

语法要点:

  • • for 和 in 是关键字。
  • • 变量 是临时变量,每次循环会被赋值为可迭代对象中的下一个元素。
  • • 可迭代对象可以是字符串、列表、元组、字典、集合等。
  • • 循环体必须缩进(通常4个空格)。
  • • 循环会重复执行,直到所有元素都被遍历完。

三、遍历不同类型的对象

3.1 遍历字符串

word = "Python"for char in word:print(char)# 输出:# P# y# t# h# o# n

3.2 遍历列表

colors = ["红", "绿", "蓝"]for color in colors:print(color)

3.3 遍历元组

point = (10, 20, 30)for coord in point:print(coord)

3.4 遍历字典

遍历字典时,默认遍历的是键(key)。

user = {"name": "张三", "age": 25, "city": "北京"}# 遍历键for key in user:print(key, "→", user[key])# 等价于for key in user.keys():print(key)# 遍历值for value in user.values():print(value)# 同时遍历键和值for key, value in user.items():print(key, ":", value)

3.5 遍历集合

tags = {"Python", "Java", "C++"}for tag in tags:print(tag)   # 顺序不确定,因为集合是无序的

3.6 使用 range() 生成数字序列

Python 提供了内置函数 range(),可以生成一系列数字,常用于固定次数的循环。

# 循环5次,i 依次为 0,1,2,3,4for i inrange(5):print(i)# 从2到5(不包括6)for i inrange(2, 6):print(i)# 步长为2for i inrange(1, 10, 2):print(i)

range() 的详细用法将在后续进阶部分学习,这里只需要知道它可以帮我们生成循环次数即可。


四、for-else 语句

for 循环可以带 else 子句。else 中的代码在循环正常结束(即没有被 break 终止)后执行。

for i inrange(5):print(i)else:print("循环正常结束")# 输出:# 0 1 2 3 4# 循环正常结束

如果循环被 break 提前终止,则 else 不会执行:

for i inrange(5):if i == 3:breakprint(i)else:print("循环正常结束")   # 不会执行# 输出:0 1 2

应用场景: 搜索时判断是否找到,例如:

numbers = [1, 3, 5, 7, 9]target = 4for n in numbers:if n == target:print("找到了")breakelse:print("没找到")   # 没找到时执行

五、break 和 continue 在 for 循环中

  • • break:立即终止整个循环。
  • • continue:跳过本次循环的剩余代码,直接进入下一次迭代。
for i inrange(1, 6):if i == 3:continue# 跳过3if i == 5:break# 到5时终止print(i)# 输出:1 2 4

注意:continue 后,循环变量会自动更新为下一个值,不需要手动操作。


六、嵌套 for 循环

一个 for 循环内部可以包含另一个 for 循环,称为嵌套循环。常用于处理二维数据结构或生成组合。

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

执行过程: 外层循环每执行一次,内层循环会完整执行一轮。


七、实战案例

案例1:求列表中所有偶数的和

numbers = [12, 7, 8, 15, 22, 31, 40]total = 0for num in numbers:if num % 2 == 0:        total += numprint("偶数和:", total)

案例2:统计字符串中元音字母的个数

text = "Hello Python Programming"vowels = "aeiouAEIOU"count = 0for char in text:if char in vowels:        count += 1print("元音字母个数:", count)

案例3:将列表中的单词首字母大写

words = ["hello", "world", "python", "loop"]capitalized = []for word in words:    capitalized.append(word.capitalize())print(capitalized)  # ['Hello', 'World', 'Python', 'Loop']

案例4:使用 enumerate 同时获取索引和值

enumerate() 函数可以在遍历时获取元素的索引和值。

fruits = ["苹果", "香蕉", "橙子"]for index, fruit inenumerate(fruits):print(f"{index}: {fruit}")# 输出:# 0: 苹果# 1: 香蕉# 2: 橙子

案例5:打印菱形(嵌套循环)

n = 5# 上半部分for i inrange(1, n+1):print(" " * (n-i) + "*" * (2*i-1))# 下半部分for i inrange(n-1, 0, -1):print(" " * (n-i) + "*" * (2*i-1))

案例6:遍历两个列表并配对(zip)

zip() 可以将多个可迭代对象中对应的元素打包成元组。

names = ["张三", "李四", "王五"]scores = [85, 92, 78]for name, score inzip(names, scores):print(f"{name}: {score}")

案例7:列表推导式(for 循环的简洁写法)

列表推导式是 Python 中一种优雅地生成列表的方式。

# 传统写法squares = []for i inrange(1, 6):    squares.append(i**2)print(squares)  # [1, 4, 9, 16, 25]# 列表推导式squares = [i**2for i inrange(1, 6)]print(squares)  # [1, 4, 9, 16, 25]# 带条件的列表推导式even_squares = [i**2for i inrange(1, 11) if i % 2 == 0]print(even_squares)  # [4, 16, 36, 64, 100]

八、常见错误与注意事项

8.1 在遍历列表时修改列表

错误示例:

numbers = [1, 2, 3, 4, 5]for n in numbers:if n % 2 == 0:        numbers.remove(n)   # 在遍历中修改列表会导致意外行为print(numbers)  # 可能不是预期结果

正确做法: 可以遍历列表的副本,或使用列表推导式生成新列表。

numbers = [1, 2, 3, 4, 5]numbers = [n for n in numbers if n % 2 != 0]  # 留下奇数print(numbers)  # [1, 3, 5]

8.2 忘记冒号

for i inrange(5)   # 缺少冒号print(i)

8.3 缩进错误

循环体必须缩进,且同一层代码要对齐。

8.4 循环变量未使用

如果循环变量在循环体内没用到,可以用下划线 _ 表示。

for _ inrange(5):print("Hello")   # 循环5次,不需要索引

8.5 遍历字典时修改字典

与列表类似,遍历字典时最好不要增删键值对,否则可能引发 RuntimeError。可以遍历字典的副本(如 list(dict.items()))。


九、总结

  • • for 循环是 Python 中最常用的循环结构,用于遍历任何可迭代对象。
  • • 基本语法:for 变量 in 可迭代对象: 循环体。
  • • 可以遍历字符串、列表、元组、字典、集合等。
  • • break 提前退出循环,continue 跳过本次迭代。
  • • for-else 在循环正常结束后执行。
  • • 嵌套循环用于处理多维数据或生成组合。
  • • enumerate() 和 zip() 提供了更便捷的遍历方式。
  • • 列表推导式是简洁的生成列表的方法。

掌握 for 循环是 Python 编程的基础,多写多练,很快就能熟练运用。

最新文章

随机文章