当前位置:首页>python>一文看懂Python列表推导式:简洁高效的列表生成神器

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

  • 2026-09-10 19:02:48
一文看懂Python列表推导式:简洁高效的列表生成神器
【写在前面】可以参看我的视频进行学习,Python从入门到实战系列课程,持续更新中,喜欢的朋友可以关注,点赞,分享。需要笔记代码的同学,可以在评论区留言。

在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**2for 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,11) if 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,21) if i%2==0if 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']

四、列表推导式 vs 普通循环:对比总结

写法
代码行数
简洁度
执行效率
普通for循环
3-5行
一般
较低
列表推导式
1行
极高
更高

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

五、快速总结

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

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


最新文章

随机文章