想系统提升编程能力、查看更完整的学习路线,欢迎访问 AI Compass:github.com/tingaicompa… 仓库持续更新刷题题解、Python 基础和 AI 实战内容,适合想高效进阶的你。
11 - 推导式:Pythonic的代码风格
学习目标: 掌握列表/字典/集合推导式
💻 代码示例
1. 列表推导式
# 传统方式
squares = []
for i in range(5):
squares.append(i ** 2)
print(squares) # [0, 1, 4, 9, 16]
# 列表推导式(一行搞定!)
squares = [i ** 2 for i in range(5)]
print(squares) # [0, 1, 4, 9, 16]
# 带条件
evens = [i for i in range(10) if i % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
# if-else
labels = ["偶数" if i % 2 == 0 else "奇数" for i in range(5)]
print(labels) # ['偶数', '奇数', '偶数', '奇数', '偶数']
# 嵌套
matrix = [[i * j for j in range(3)] for i in range(3)]
print(matrix) # [[0,0,0], [0,1,2], [0,2,4]]
# 展平二维列表
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]
2. 字典推导式
# 创建字典
squares = {i: i ** 2 for i in range(5)}
print(squares) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 过滤字典
scores = {"Alice": 90, "Bob": 75, "Charlie": 92}
passed = {name: score for name, score in scores.items() if score >= 80}
print(passed) # {'Alice': 90, 'Charlie': 92}
# 键值互换
d = {"a": 1, "b": 2}
swapped = {v: k for k, v in d.items()}
print(swapped) # {1: 'a', 2: 'b'}
3. 集合推导式
# 创建集合
squares = {i ** 2 for i in range(-5, 6)}
print(squares) # {0, 1, 4, 9, 16, 25} (自动去重)
# 从字符串提取唯一字符
chars = {c for c in "hello"}
print(chars) # {'h', 'e', 'l', 'o'}
🎯 在算法题中的应用
# 将二维列表展平
matrix = [[1,2,3], [4,5,6], [7,8,9]]
flat = [num for row in matrix for num in row]
# 过滤正数
nums = [-2, -1, 0, 1, 2]
positive = [x for x in nums if x > 0]
# 第3课:最长连续序列
num_set = set(nums) # 或 {x for x in nums}
🎓 小结
✅ 列表推导式:[expr for x in iterable if cond]
✅ 字典推导式:{k: v for x in iterable}
✅ 集合推导式:{expr for x in iterable}
✅ 比传统循环更简洁、更Pythonic
下一步: 13-collections模块.md
如果这篇内容对你有帮助,推荐收藏 AI Compass:github.com/tingaicompa… 更多系统化题解、编程基础和 AI 学习资料都在这里,后续复习和拓展会更省时间。