Python中的列表推导式:简洁高效的数据处理艺术
列表推导式是Python最优雅的特性之一,它能用一行代码完成循环和条件判断,让数据处理变得简洁高效。
基本语法
# 创建0-9的平方列表
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
添加条件过滤
# 仅保留偶数的平方
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # [0, 4, 16, 36, 64]
嵌套循环
# 矩阵转置
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transpose = [[row[i] for row in matrix] for i in range(3)]
print(transpose) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
字典推导式
# 创建字符ASCII码映射
char_map = {
char: ord(char) for char in 'Python'}
print(char_map) # {'P': 80, 'y': 121, 't': 116, 'h': 104, 'o': 111, 'n': 110}
性能优势
列表推导式比普通for
循环快约30%,因为它直接在C语言层实现迭代,避免了Python解释器的开销。
使用建议
- 适用场景:简单数据转换/过滤
- 避免嵌套过深:超过两层嵌套建议改用循环
- 替代方案:复杂逻辑可使用
map()
+filter()
当需要处理海量数据时,考虑生成器表达式
(x for x in range(1000000))
可节省内存。
列表推导式体现了Python"少即是多"的设计哲学。掌握它,你的代码将更Pythonic!
注:本文代码在Python 3.8+验证通过。列表推导式于Python 2.0首次引入,现已成为核心特性之一。