Python 效率飞升术:3基础进阶小工具,少写 100 行循环

还在手动写循环处理数据?Python 里这几个 "懒人神器",看似基础却能直接拉高代码效率,新手也能秒上手!

1. itertools :循环偷懒神器,少写 N 行重复代码

处理迭代器时,itertools 里的方法能帮你实现各种花式循环,不用再手写嵌套逻辑。最常用的就是 cycle(无限循环)和 chain(拼接迭代器)。

python 复制代码
import itertools

# 需求1:循环遍历列表,到末尾后从头再来
colors = ["red", "green", "blue"]
color_cycle = itertools.cycle(colors)

# 取前5个元素(演示用,实际可无限取)
for _ in range(5):
    print(next(color_cycle))
# 输出:red green blue red green

# 需求2:拼接多个列表,避免创建新列表占用内存
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = itertools.chain(list1, list2)

for num in combined:
    print(num, end=" ")  # 输出:1 2 3 4 5 6

2. collections.defaultdict :字典分组不翻车,告别 KeyError

用普通字典分组时,得先判断键是否存在,而 defaultdict 能直接指定默认值类型,分组代码一步到位。

python 复制代码
from collections import defaultdict

# 需求:把学生按成绩等级分组
students = [
    ("小明", "A"),
    ("小红", "B"),
    ("小刚", "A"),
    ("小美", "B")
]

# 传统字典写法:繁琐且易出错
grade_dict = {}
for name, grade in students:
    if grade not in grade_dict:
        grade_dict[grade] = []
    grade_dict[grade].append(name)
print(grade_dict)  # {'A': ['小明', '小刚'], 'B': ['小红', '小美']}

# defaultdict 写法:简洁高效
default_grade = defaultdict(list)
for name, grade in students:
    default_grade[grade].append(name)
print(dict(default_grade))  # 结果同上

3. enumerate 进阶用法:自定义起始索引,循环更灵活

基础的 enumerate 大家都会用,但自定义起始索引这个小细节,能让循环结果更贴合实际需求,不用再手动 +1

python 复制代码
# 需求:打印学生排名,从1开始计数
names = ["张三", "李四", "王五"]

# 基础用法:默认从0开始
for idx, name in enumerate(names):
    print(f"第{idx+1}名:{name}")  # 手动+1,麻烦

# 进阶用法:指定start参数,直接从1开始
for idx, name in enumerate(names, start=1):
    print(f"第{idx}名:{name}")
# 输出:
# 第1名:张三
# 第2名:李四
# 第3名:王五

小总结

  1. itertools 能简化迭代器操作,减少重复循环代码;
  2. defaultdict 是字典分组的 "利器",避免手动判断键是否存在;
  3. enumerate 指定 start 参数,能直接得到符合需求的索引。
相关推荐
MATLAB代码顾问9 分钟前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
ting945200013 分钟前
Tornado 全栈技术深度指南:从原理到实战
人工智能·python·架构·tornado
果汁华36 分钟前
Browserbase Skills:让 Claude Agent 真正“看见“网页世界
人工智能·python
ZhengEnCi36 分钟前
04-缩放点积注意力代码实现 💻
人工智能·python
DeepReinforce1 小时前
三、AI量化投资:使用akshare获取A股主板20260430所有的涨停股票
python·量化·akshare·龙头战法
段一凡-华北理工大学2 小时前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章08:多模态数据融合:让数据更聪明
人工智能·python·高炉炼铁·ai赋能·工业智能体·高炉炉温
万粉变现经纪人2 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
其实防守也摸鱼2 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
callJJ3 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
小郑加油3 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习