编程入门 | Python列表推导式:一行代码搞定
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 row 再 for 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教程 #列表推导式 #新手学编程 #代码学习
所有评论(0)