写程序时,循环是再常见不过的结构。无论是处理一批数据,还是重复执行某个任务,for、while这些循环结构天天见。但很多人只是会用,却没注意怎么用得更聪明。掌握一些循环控制技巧,能让你的代码跑得更快,也更容易维护。
善用 break 跳出循环
当你在一堆数据里找某个目标,一旦找到就没必要继续了。这时候 break 就派上用场。比如在一个名单里查找“张三”,找到了就立刻跳出,省下后面的遍历时间。
names = ["李四", "王五", "张三", "赵六"]
for name in names:
if name == "张三":
print("找到了!")
break
continue 忽略特定情况
有时候你只想处理符合条件的数据,其他跳过。continue 可以跳过当前这轮循环,直接进入下一次。比如处理订单时,跳过已取消的订单。
orders = ["已完成", "进行中", "已取消", "待发货"]
for order in orders:
if order == "已取消":
continue
print(f"需要处理:{order}")
避免在循环里做重复计算
有些操作其实只需要做一次,但被不小心放进了循环。比如获取列表长度、读取配置文件、拼接固定字符串等。把这些移到循环外面,能明显提升效率。
# 错误示范
items = [1,2,3,4,5]
for i in range(len(items)):
print(items[i])
# 正确做法
items = [1,2,3,4,5]
n = len(items) # 提前算好
for i in range(n):
print(items[i])
用 else 配合循环?你可能没见过
Python 的 for 和 while 循环还能跟 else 搭配。只有当循环正常结束(不是被 break 中断)时,else 块才会执行。这个特性适合用来判断是否“走完流程”。
for i in range(3):
if i == 5:
print("发现目标")
break
else:
print("遍历完了也没找到")
尽量用 for 而不是 while
除非你真的需要复杂的条件控制,否则优先选 for 循环。它更清晰,不容易出错。比如遍历列表、字典、字符串,for 写起来简洁又安全。while 容易因为条件写错导致死循环,调试起来头疼。
利用 enumerate 获取索引
想一边遍历一边知道当前是第几个元素?别自己用计数器变量,用 enumerate 更优雅。
fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
print(f"第{index+1}个水果是{fruit}")
提前退出减少资源消耗
在函数中处理大量数据时,尽早判断是否需要继续执行。比如传进来的是空列表,直接 return,别进循环白跑一趟。这种小习惯积少成多,对性能有帮助。
def process_data(data_list):
if not data_list:
return
for item in data_list:
print(item)