page contents

一文看懂Python列表推导式:简洁高效的列表生成神器

在Python编程里,列表推导式绝对是最优雅、最高效的语法糖之一!它能用一行代码替代多行循环,快速生成、过滤、转换列表,代码既简洁又易读,不管是新手入门还是老手优化代码,都是必学技能。

attachments-2026-05-kRmVHdpR6a0525662f14c.png在Python编程里,列表推导式绝对是最优雅、最高效的语法糖之一!它能用一行代码替代多行循环,快速生成、过滤、转换列表,代码既简洁又易读,不管是新手入门还是老手优化代码,都是必学技能。

今天就用通俗易懂的方式,带你彻底掌握列表推导式,看完直接上手用!

一、什么是列表推导式?

列表推导式是Python专门用于创建列表的精简语法,核心作用就是简化循环+生成列表,把原本需要3-5行的代码,压缩成一行,逻辑清晰还不丢可读性。

核心语法结构

# 基础格式
新列表 = [表达式 for 变量 in 可迭代对象]

# 带条件过滤的格式(最常用)
新列表 = [表达式 for 变量 in 可迭代对象 if 条件]

简单拆解:

  • 表达式:最终要存入列表的元素(可以是变量、计算、函数调用)
  • for 变量 in 可迭代对象:遍历循环(和普通for循环逻辑一样)
  • if 条件:可选,过滤符合要求的元素

二、为什么要用列表推导式?

  1. 代码极简:一行搞定,告别冗余的for循环+append
  2. 效率更高:比手动循环+添加元素的执行速度更快
  3. 可读性强:逻辑一目了然,同行一看就懂你的意图
  4. 功能强大:支持计算、过滤、嵌套,覆盖90%列表生成场景

三、超实用举例(从简单到进阶,直接复制用)

1. 基础版:快速生成列表(无过滤)

最基础用法,直接遍历生成新列表,替代append循环。

例子1:生成0-9的数字列表

普通写法:

num_list = []
for i in range(10):
    num_list.append(i)
print(num_list)  # [0,1,2,3,4,5,6,7,8,9]

列表推导式写法(一行搞定):

num_list = [i for i in range(10)]
print(num_list)  # [0,1,2,3,4,5,6,7,8,9]

例子2:生成字符串列表

# 把字母遍历生成列表
char_list = [c for c in "python"]
print(char_list)  # ['p','y','t','h','o','n']

2. 进阶版:带计算/转换(生成处理后的元素)

表达式不只是变量,还能做数学计算、字符串拼接、类型转换

例子1:生成1-10的平方数

square_list = [i**2 for i in range(1,11)]
print(square_list)  # [1,4,9,16,25,36,49,64,81,100]

例子2:数字转字符串

str_list = [str(i) for i in [1,2,3,4]]
print(str_list)  # ['1','2','3','4']

例子3:字符串拼接

name_list = ["张三","李四","王五"]
new_list = [f"用户:{name}" for name in name_list]
print(new_list)  # ['用户:张三', '用户:李四', '用户:王五']

3. 实用版:带条件过滤(筛选元素)

if 条件,只保留符合要求的元素,不用写单独的if判断。

例子1:筛选1-10的偶数

even_list = [i for i in range(1,11if i % 2 == 0]
print(even_list)  # [2,4,6,8,10]

例子2:筛选长度≥3的单词

words = ["cat","apple","hi","python","ok"]
long_words = [w for w in words if len(w) >= 3]
print(long_words)  # ['cat','apple','python']

例子3:筛选大于5的数字

nums = [1,8,3,10,5,7]
big_nums = [n for n in nums if n > 5]
print(big_nums)  # [8,10,7]

4. 高阶版:多条件过滤(精准筛选)

支持多个if条件,相当于的关系。

# 筛选1-20之间,偶数且大于10的数字
num_list = [i for i in range(1,21if i%2==0 if i>10]
print(num_list)  # [12,14,16,18,20]

5. 终极版:嵌套循环(处理二维数据)

支持双层for循环,适合扁平化二维列表、生成组合数据。

例子1:扁平化二维列表

# 把二维列表转成一维
matrix = [[1,2],[3,4],[5,6]]
flat_list = [num for row in matrix for num in row]
print(flat_list)  # [1,2,3,4,5,6]

例子2:生成两个列表的元素组合

# 生成字母+数字的所有组合
letters = ["a","b"]
numbers = [1,2]
combo = [l+str(n) for l in letters for n in numbers]
print(combo)  # ['a1','a2','b1','b2']

小提醒:如果逻辑特别复杂(超过3层循环、多分支判断),别强行用列表推导式,优先用普通循环保证可读性~

快速总结

  1. 列表推导式 = 一行代码生成列表,简洁高效
  2. 基础公式:[表达式 for 变量 in 可迭代对象]
  3. 过滤公式:[表达式 for 变量 in 可迭代对象 if 条件]
  4. 适用场景:生成列表、转换元素、过滤数据、扁平化嵌套列表

学会列表推导式,你的Python代码直接进阶「优雅风」,日常写代码效率翻倍!

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

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

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-05-14 09:30
  • 阅读 ( 24 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2059 篇文章

作家榜 »

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