
如果你写 Python 代码已经有一段时间了,你就会明白这门语言的关键不是耍小聪明。
而在于精准与优雅。
但偶尔也会遇到一句堪称“神来之笔”的代码,只用一行就能省下五行代码、少一个 bug,还能稍微保住一点理智。这样的代码,才是真正值得你永久记在脑子里的。
这些不是用来炫技的小把戏。它们是经过实战检验、每天都在用的、“没有它我以前是怎么活过来的?”那种单行代码。
下面是我总结的 9 条堪称“神来之笔”的单行代码,每一条我都会在实际工作中用到,一起来看看吧!
flat = [x for sub in nested for x in sub]不管你多有经验,嵌套列表总会在你最意想不到的时候混进代码里。API 返回值、CSV 解析、Pandas 的 .values 等 —— 防不胜防。
这行代码在中小规模列表上比 itertools.chain 更快,而且比“循环里套循环”可读性高得多。
如果你写过下面这种代码:
result = []for sub in nested: for x in sub: result.append(x)那你就会明白这一行代码的重要性了。
比如你在处理一个接口返回的数据结构:
response = { "users": [ {"roles": ["admin", "editor"]}, {"roles": ["viewer"]}, {"roles": ["editor", "viewer"]} ]}你需要拿到所有角色的扁平列表,用于权限统计或校验。
一行代码解决
roles = [r for user in response["users"] for r in user["roles"]]PS:当然,肯定有一些爱钻牛角尖的读者又得在这较真的,说什么列表推导式可读性和效率并没有比循环更高。肯定没有绝对的事,如果循环超过2层以上,从可读性来讲,还是继续用循环的嵌套方式吧;反之就用列表推导式,无论是可读性和效率都会更好,不多做解释,懂得都懂。
content = open("file.txt").read()是的,我知道 with open(...) 是“最佳实践”。
我也知道凌晨 2 点调试的时候,我只想立刻看到文件内容,而不是走完整套仪式。
之所以能这么写,是因为 CPython 会在对象被垃圾回收时自动关闭文件。这对库代码来说不理想,但对脚本、REPL、快速检查来说非常完美。
不是库级最佳实践,但非常适合工程师的“临时战斗场景”。
a, b = b, a这是那种因为太简洁而被你忽略的 Python 特性。
在底层,Python 会创建一个元组再解包——原子性、安全、可读。
如果你还在写:
temp = aa = bb = temp那你其实是在用 Python 写 Java、在违背 Python 的设计哲学,说明你还没有丢掉 Java 的陋习(~~)。
mapping = dict(zip(keys, values))我在数据规范化时一直在用它:表头 + 行数据、ID + 对象、配置项 + 环境变量。
它比手动索引更快、更清晰、更不容易出错。
比如,你从 CSV 或数据库拿到字段名和对应值:
columns = ["id", "email", "role", "created_at"]row = [42, "a@b.com", "admin", "2024-01-01"]一行转成结构化数据
record = dict(zip(columns, row))工程优势:
这是 ETL / 数据清洗 / API 适配层的常用模式。
额外福利:zip 会在最短的可迭代对象处停止——这意味着更少的意外 IndexError(你可以理解成木桶短板效应)。
这是特性,不是 bug。
unique = list(dict.fromkeys(items))这一招严重被低估了。
是的,set(items) 也能去重——但它会破坏顺序。在真实系统里,顺序往往代表时间、优先级或语义,往往是不可接受的。
dict.fromkeys() 会保留插入顺序(Python 3.7+)。
我在生产级数据管道中经常用它——靠谱、干净、而且快。
比如,你在处理事件流,既要去重,又不能打乱时间顺序:
events = [ "login", "view", "login", "purchase", "view"]正确的工程写法
unique_events = list(dict.fromkeys(events))if 语句的默认字典值count[x] = count.get(x, 0) + 1这行代码可能是我写过的“统计最多东西”的一行。
日志、事件、频率、指标——无所不包。
是的,collections.Counter 确实存在——我也会用。但这个写法在任何地方都能用,哪怕你无法控制数据结构。
简单、可预测、随便你折腾。
比如,假设你想统计不同 API 状态码出现的次数:
status_counts = {}for status in responses: status_counts[status] = status_counts.get(status, 0) + 1为什么这是“工业级一行”
即使在你无法引入 Counter 的环境中,它也永远可用。
print(f"{__file__}:{__line__} ->", value)在调试复杂系统时,上下文比值本身更重要。
知道是哪一个文件、哪一行产生了输出,每次都能省下几分钟——积少成多,非常可观。
光是这个习惯,过去几年就帮我省了好几个小时。
value and do_something(value)这是那种读起来就像英语的 Python 惯用法。
没有 if,没有缩进,没有噪音。
非常适合可选回调、日志钩子、条件性副作用。
只记住一件事:它依赖于“真假值(truthiness)”——你得清楚你的数据是什么。
vars(obj)我用它的次数比 dir() 多得多。
vars() 展示的是真实状态:不是方法,不是魔法属性——只有真正重要的实例属性。
当你面对陌生对象、第三方库、文档写得一塌糊涂的 SDK时,这就是你从“瞎猜”走向“确定”的方式。
如果你想提升自己的编码思维,写出更 Pythonic 的代码,可以订阅我的【Python 设计模式(Design Patterns)】合集。投资自己,总是不会错的!
Thanks for your reading!
Enjoying coding, my friends! 🧑💻🧑💻🧑💻💯💯💯
推荐阅读👇👇👇
🌟 如果你觉得这篇文章对你有帮助,并且愿意支持我的话,你可以: 🌟
• 👍 点赞,让文章获得系统推荐 • ⤴️ 分享,把内容传递给身边的伙伴 • ❤️ 推荐,让文章影响到更多人 • 👏 欢迎留言交流,一起拓展技术的边界

👇👇👇 Follow me,获取更多高质量干货分享,我们下期再见!