什么是列表推导式?
列表推导式是Python特有的简洁写法,用一行代码代替多行循环。
基本语法
# 传统写法
squares = []
for i in range(10):
squares.append(i**2)
# 推导式写法(一行搞定)
squares = [i**2 for i in range(10)]
带条件过滤
# 获取0-99之间的偶数
evens = [x for x in range(100) if x % 2 == 0]
字典推导式
name_lengths = {name: len(name) for name in ['Tom', 'Jerry', 'Alice']}
# {'Tom': 3, 'Jerry': 5, 'Alice': 5}
集合推导式
numbers = [1, 2, 2, 3, 3, 4]
unique = {x for x in numbers} # {1, 2, 3, 4}
生成器表达式
gen = (x**2 for x in range(1000000))
# 惰性求值,不占内存
print(next(gen)) # 0
print(next(gen)) # 1
# 适合处理大量数据
total = sum(x**2 for x in range(1000000))
实战案例
# 1. 过滤并转换列表
data = ['12', 'abc', '45', 'xyz', '78']
numbers = [int(s) for s in data if s.isdigit()]
# [12, 45, 78]
# 2. 嵌套列表展开
nested = [[1, 2], [3, 4, 5], [6]]
flat = [x for sublist in nested for x in sublist]
# [1, 2, 3, 4, 5, 6]
总结
推导式是Python的语言精髓,能显著提升代码简洁度和可读性。但过长的推导式反而不易读。