1. Python for 循环的基本概念
1.1 for 循环的语法结构
在 Python 中,for 循环用于遍历可迭代对象的每一个元素,执行缩进块中的代码。关键字为 for、in、冒号和缩进,没有大括号来表示代码块。理解这种结构是掌握循环的第一步。
典型的语法形式如下:for 变量 in 可迭代对象: 代码块。通过将可迭代对象逐个取出,变量会依次承载当前元素的值。

for item in iterable:# 在这里对 item 执行操作print(item)
缩进是决定代码块范围的关键,如果缩进不一致,会导致语法错误。初学者应养成统一的缩进习惯,通常为每层缩进 4 个空格。
1.2 循环遍历字符串、列表、元组的差异
for 循环可以遍历多种可迭代对象,包括字符串、列表、元组,甚至字典的键。遍历方式本质上都是将序列中的元素逐个取出,并将其赋值给循环变量。
遍历字符串时,循环变量代表每个字符;遍历列表或元组时,循环变量代表其中的每个元素。对于字典,默认遍历的是键,若要同时获取键和值,可以使用 items()。
# 遍历字符串
for ch in "Python":print(ch)# 遍历列表
for num in [1, 2, 3]:print(num)# 遍历字典的键
d = {"a": 1, "b": 2}
for key in d:print(key, d[key])# 同时遍历键和值
for key, value in d.items():print(key, value)
理解不同可迭代对象的特征有助于选用合适的遍历方式,提升代码可读性与效率。
1.3 循环控制:break、continue、else
在循环中可以使用 break 提前终止循环,跳出整个循环块;continue 则跳过本次循环的剩余代码,直接进入下一次遍历。
此外,Python 还提供了 else 子句,和循环配合使用时,只有在循环正常结束(未被 break 终止)后才会执行 else 块中的代码。
# break 示例:遇到目标就退出
for i in range(10):if i == 5:breakprint(i)# continue 示例:跳过特定条件的本次循环
for i in range(5):if i % 2 == 0:continueprint(i)# else 示例:只有循环正常结束才执行
for i in range(3):print(i)
else:print("循环结束且未被 break 打断")
掌握这些控制语句后,可以灵活地处理循环中的不同场景,如筛选、跳过、提前退出等。
2. range、enumerate、zip 等常用技巧
2.1 range() 的用法
range() 是生成等差数列的常用工具,常用于控制循环次数。它可以接收一个、两个或三个参数,分别表示 起始值、结束值(不包含该值)和步长。
通过 range(),可以简洁地实现从 0 到 n-1 的计数、从 a 到 b 的范围遍历等场景。
# 0 到 4
for i in range(5):print(i)# 从 1 开始到 6 结束,步长为 2
for i in range(1, 7, 2):print(i)
注意 range 返回的是一个可迭代对象,而非列表;需要时可将其转换为列表或直接迭代使用。
2.2 enumerate() 获取索引和值
enumerate() 用于在遍历可迭代对象的同时获取元素的索引值,默认从 0 开始,可以通过参数 start 设定起始索引。
这是在需要同时访问索引和元素时的标准做法,避免手动维护计数器,减少错误。
fruits = ["apple", "banana", "cherry"]
for idx, val in enumerate(fruits):print(idx, val)# 从 1 开始的索引
for idx, val in enumerate(fruits, start=1):print(idx, val)
使用 enumerate 能让代码更简洁、可读性更高,尤其在需要索引操作的场景中非常实用。
2.3 zip() 同时遍历多个序列
zip() 可以把多个可迭代对象“拉平”成一组组元组,实现在同一轮循环中同时遍历多个序列。
这是对比 for 循环的常见技巧,尤其在需要并行处理两组数据时十分有用。
names = ["Alice", "Bob", "Carol"]
scores = [85, 92, 78]for name, score in zip(names, scores):print(name, score)
如果需要遍历最长的序列并在短序列用 None、默认值填充,可以结合 itertools.zip_longest 使用。
3. 实战案例:简单的循环应用
3.1 统计列表中元素出现次数
使用 for 循环和字典来统计出现次数,是学习循环的经典练习。通过将元素作为字典的键,值记录其出现次数,可以快速得到统计结果。
下面给出一个简单实现,展示如何统计一个整数列表中每个数的出现次数:统计结果以字典形式返回,方便后续处理或输出。
def count_occurrences(nums):counts = {}for n in nums:if n in counts:counts[n] += 1else:counts[n] = 1return countsdata = [1, 3, 2, 1, 3, 1, 4]
print(count_occurrences(data))
在实际场景中,可以结合 collections.Counter 实现更高效的统计,但理解这个手写版本有助于掌握循环的基本原理。
3.2 打印九九乘法表
通过嵌套的 for 循环,可以实现常见的九九乘法表输出。外层控制行,内层控制列,注意格式对齐与换行,以便美观呈现。
以下示例展示了直观的实现方式,输出井然有序的乘法结果:
for i in range(1, 10):for j in range(1, i + 1):print(f"{i}*{j}={i*j}", end="\\t")print()
通过内外两层循环,能够灵活控制输出格式,且对初学者来说,是理解嵌套循环的直观案例。


