当前位置: 首页 > news >正文

【Python 语法糖小火锅 · 第 4 涮】

一、糖味一句话

列表 / 集合 / 字典 / 生成器推导式 = 把「循环 + 条件 + 收集」三件套浓缩成一行,
编译器帮你做 append、add、update,速度还更快。


二、1 行示例 4 连发

nums = range(10)lst = [x*x for x in nums if x % 2 == 0]          # 列表
s   = {x for x in nums if x > 5}                 # 集合
d   = {x: x**3 for x in nums if x < 4}           # 字典
gen = (x for x in nums if x % 3)                 # 生成器(惰性)

三、真实场景:日志字段秒变字典

需求:从 access.log 里提取所有状态码 ≥ 400 的 IP 并去重计数。

from pathlib import Path
from collections import Counterips_4xx = Counter(line.split()[0]for line in Path('access.log').read_text().splitlines()if len(line.split()) > 8 and int(line.split()[8]) >= 400
)
print(ips_4xx.most_common(5))

全程只用 1 个推导式 + 1 个 Counter,无显式循环。


四、防踩坑小贴士

  1. 列表推导式会一次性生成全部元素,大数据请改用生成器表达式
  2. 不要在推导式里写副作用(print、append),会失去可读性。
  3. 嵌套推导式尽量拆成两步,否则调试时找不到北。

记忆口令 :“中括号列表,花括号集/字典,圆括号生万物; for 在前 if 在后,一行循环不用愁。”

http://www.dtcms.com/a/323389.html

相关文章:

  • 资深全栈工程师面试题总结
  • 【牛客刷题】小红的区间删除
  • 第16届蓝桥杯Scratch选拔赛初级及中级(STEMA)2024年11月24日真题
  • Linux之shell脚本篇(四)
  • SQL 172 未完成试卷数大于1的有效用户
  • 9. 堆和栈有什么区别
  • 01数据结构-图的邻接矩阵和遍历
  • 从零开始理解编译原理:设计一个简单的编程语言
  • svg 图片怎么设置 :hover 时变色
  • 交 换
  • sigaction 中 sa_handler = SIG_IGN 的深度解析与应用实践
  • day14 - html5
  • 2025年TOP5服装类跟单软件推荐榜单
  • 复杂正则语句(表格数据)解析
  • CentOS7运行AppImage
  • 历史数据分析——首旅酒店
  • 电子电气架构 --- 48V车载供电架构
  • ubuntu修改密码
  • 基于dynamic的Druid 与 HikariCP 连接池集成配置区别
  • 论文阅读 2025-8-3 [FaceXformer, RadGPT , Uni-CoT]
  • 数论——约数之和、快速乘
  • 新手入门:Git 初次配置与 Gitee 仓库操作全指南 —— 从环境搭建到代码推送一步到位
  • 【unitrix数间混合计算】2.9 小数部分特征(t_non_zero_bin_frac.rs)
  • Java基础-完成局域网内沟通软件的开发
  • day 16 stm32 IIC
  • day 35_2025-08-09
  • 202506 电子学会青少年等级考试机器人四级器人理论真题
  • Java -- 日期类-第一代-第二代-第三代日期
  • 05.【数据结构-C语言】栈(先进后出,栈的实现:进栈、出栈、获取栈顶元素,栈实现代码,括号匹配问题)
  • 分布式事务Seata TCC模式篇