2026-06-23

前几期讲过Python的基础变量和函数,今天聊一个非常实用的语法糖——列表推导式(List Comprehension)

什么是列表推导式?

简单说,就是把一个for循环 + 列表append的操作压缩成一行。代码更简洁,可读性更好。

传统写法 vs. 推导式

场景:生成一个0到9每个数平方的列表。

传统写法:


squares = []
for i in range(10):    squares.append(i ** 2)

列表推导式:

squares = [i ** 2 for i in range(10)]

结果一样,都是 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81],但推导式只有一行,少写三行代码。

还可以加条件筛选

列表推导式后面可以跟 if 条件,只保留符合条件的元素。

例子:只取偶数


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

这个比传统的先if判断再append要直观得多,特别适合数据清洗和过滤场景。

嵌套列表推导式

把二维列表(矩阵)展平成一维,用列表推导式一行搞定:


matrix = [[1, 2], [3, 4], [5, 6]]
flat = [num for row in matrix for num in row]print(flat)  # [1, 2, 3, 4, 5, 6]

注意执行顺序是先 for rowfor num,和正常嵌套循环一样,只是把外层循环写前面了。

实用小技巧

  • 读取文件时去掉空行:[line.strip() for line in f if line.strip()]
  • 提取字典的值:[value for value in data.values()]
  • 字符串数字提取:[char for char in text if char.isdigit()]

几点注意事项

列表推导式虽好,但不要为了炫技强行嵌套。如果逻辑复杂到要看半天才懂,就老老实实写for循环——代码是写给人看的,顺便给机器运行。

小练习:

用列表推导式生成1到20中所有3的倍数的列表。答案评论区见👀

#编程入门 #Python教程 #列表推导式 #新手学编程 #代码学习