for 循环本质
Python 的 for 是 for-each,不是 C 风格的"计数循环":
for fruit in ["苹果", "橘子", "香蕉"]:
print(fruit)
任何可迭代对象都能 for——list / tuple / str / dict / set / 文件 / 生成器…
for ch in "Python":
print(ch) # P y t h o n(每字符一行)
range:要"循环 N 次"时用
for i in range(5):
print(i) # 0 1 2 3 4
range(2, 8) # 2 3 4 5 6 7
range(0, 10, 2) # 0 2 4 6 8(步长 2)
range(10, 0, -1) # 10 9 8 ... 1(倒序)
enumerate:同时拿下标和值
fruits = ["苹果", "橘子", "香蕉"]
for i, fruit in enumerate(fruits):
print(i, fruit)
# 0 苹果
# 1 橘子
# 2 香蕉
# 下标从 1 开始
for i, fruit in enumerate(fruits, start=1):
print(i, fruit)
别再写
for i in range(len(fruits)):了——用 enumerate。
zip:并排遍历多个序列
names = ["Alice", "Bob", "Carol"]
scores = [92, 78, 85]
for name, score in zip(names, scores):
print(f"{name}: {score}")
# Alice: 92
# Bob: 78
# Carol: 85
zip 在长度不一致时停在最短那个。
遍历字典
d = {"a": 1, "b": 2}
for k in d: # 默认遍历 keys
print(k, d[k])
for k, v in d.items(): # 同时拿 k 和 v
print(k, v)
else 子句(少见但好用)
for 循环正常结束后会执行 else。被 break 跳出则不会:
for n in [2, 3, 5, 7]:
if n == 4:
print("找到")
break
else:
print("没找到") # 走这里
下一篇讲循环 while 和 break / continue。