page contents

Python 推导式:一行顶十行的"Python 味"

面试官问"你怎么判断一个人 Python 写得熟不熟",有个简单办法:看他会不会"一行流"。别人写五行的循环,他一行搞定,还更好读。

attachments-2026-09-dtN1NIw66ab089f70b51c.png

面试官问"你怎么判断一个人 Python 写得熟不熟",有个简单办法:看他会不会"一行流"。别人写五行的循环,他一行搞定,还更好读。

这个"一行流"叫推导式(comprehension),外加几个好用到离谱的内置函数。今天一次讲完。

推导式 = 压缩版循环:把"建空列表、循环、append"三步,折进一行。读法是从左往右:"给 xxx,对 xxx 里的每个,如果 xxx"。

一、对照实验:五行变一行

# 需求:把所有成绩乘1.2(平时分加成)

# 循环版(5行)
new_scores = []
for s in scores:
    new_scores.append(s * 1.2)

# 推导式版(1行)
new_scores = [s * 1.2for s in scores]

读法:方括号里先看 for 左边(要什么:s * 1.2),再看 for 右边(从哪来:scores 里每个 s)。就这么简单,会读 for 循环就会读推导式。

二、加个筛子:带 if 的推导式

scores = [88, 55, 92, 61, 47]

# 只留及格的,再都加10分
passed = [s + 10for s in scores if s >= 60]
print(passed)   # [98, 102, 71]

for 后面跟 if,就是"过滤":不满足的直接不要,连 for 左边都不进。清洗数据、筛选日志,这个句式出现频率高到离谱——AI 应用里"从返回结果里挑出所有 tool_calls",用的就是它。

三、两个必会的内置函数

fruits = ["苹果", "香蕉", "橙子"]

# enumerate:下标和值一起拿
for i, f inenumerate(fruits):
print(f"第{i}名:{f}")

# zip:两个名单并排走
names = ["七七", "小明"]
ages = [18, 20]
for n, a inzip(names, ages):
print(f"{n}今年{a}岁")

enumerate 治好了"我想要下标又想要值"的病(不用 range(len()) 那种丑写法);zip 治好了"两个列表要对着处理"的病。再加上前面见过的 sorted(列表, reverse=True),四件套凑齐,日常脚本基本横着走。

四、字典推导式与翻车警告

words = ["ai", "python", "chatgpt"]

# 词 → 词长 的字典,一行造
lengths = {w: len(w) for w in words}
print(lengths)   # {'ai': 2, 'python': 6, 'chatgpt': 7}

方括号换花括号,冒号左边是键右边是值,字典推导式就成了。

翻车警告:推导式超过一个 for + 一个 if,就停手写回普通循环。见过三层嵌套推导式的代码吗?像一碗缠死的面条——"一行流"是让人看懂的,不是让人炫耀的。

五、三条实操建议

"转换+过滤"场景首选推导式。一眼能看懂的推导式,永远优于五行循环。

要下标必用 enumerate。range(len(列表)) 是 Java 玩家写 Python 的口音,改掉。

读别人代码遇到推导式别慌。先找 for,再看左边,倒着读就懂了。

代码的优雅不是行数少,
而是读的人省力——推导式刚好两样都占。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

  • 发表于 2026-09-21 09:35
  • 阅读 ( 41 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2484 篇文章

作家榜 »

  1. Pack 2484 文章
  2. 轩辕小不懂 2403 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章