Python 列表推导式入门:用一行代码写出更简洁的循环

举报
yd_221894022 发表于 2026/11/06 10:15:52 2026/11/06
【摘要】 本文用几个小例子讲清 Python 列表推导式的基本写法、带条件过滤的写法,以及它和普通循环的取舍,适合刚学完循环的初学者。

写 Python 时,常常要从一个序列生成新的列表。比如想得到 1 到 5 的平方,新手最常见的写法是:

squares = []
for i in range(1, 6):
    squares.append(i * i)
print(squares)  # [1, 4, 9, 16, 25]

这样写没问题,但 Python 提供了一种更简洁的写法——列表推导式,一行就能完成同样的事:

squares = [i * i for i in range(1, 6)]

一、基本写法

列表推导式的样子是:

[表达式 for 变量 in 可迭代对象]

表达式决定新元素长什么样,for 负责遍历。再比如,把一串名字统一转成大写:

names = ["amy", "bob", "cindy"]
upper = [name.upper() for name in names]
print(upper)  # ['AMY', 'BOB', 'CINDY']

二、加上条件过滤

想先挑出偶数,再求平方,条件写在最后:

even_squares = [i * i for i in range(1, 11) if i % 2 == 0]
print(even_squares)  # [4, 16, 36, 64, 100]

顺序是先遍历、再过滤、最后计算表达式。

三、和普通循环怎么选

推导式适合“一句话能说清”的变换;如果逻辑里有多个步骤、或者嵌套超过两层,还是写回普通循环更易读。例如下面这样写就过了头:

# 不推荐:嵌套太多,一眼看不懂
result = [[j for j in range(3)] for i in range(3)]

四、小结

  • 语法:[表达式 for 变量 in 序列 if 条件]
  • 适合:转换元素、过滤元素、快速生成新列表
  • 原则:能一眼看懂就用,看不懂就拆回循环

先从简单的例子练起,写上十来个推导式,它很快会成为你写 Python 时最顺手的工具之一。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。