简介Python 推导式是一种独特的数据处理方式可以从一个数据序列构建另一个新的数据序列的结构体。推导式类型语法返回类型元组推导式(表达式 for 变量 in 可迭代对象 )或(表达式 for 变量 in 可迭代对象 if 条件)generator列表推导式[表达式 for 变量 in 可迭代对象]或[表达式 for 变量 in 可迭代对象 if 条件]list字典推导式{键表达式: 值表达式 for 变量 in 可迭代对象} 或 {键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}dict集合推导式{表达式 for 变量 in 可迭代对象}或{表达式 for 变量 in 可迭代对象 if 条件}set元组推导式# 列表推导式立即创建所有元素 squares_list [x**2 for x in range(1000000)] # 占用大量内存 # 元组表达式惰性计算 squares_gen (x**2 for x in range(1000000)) # 几乎不占用内存 # 使用元组 for square in squares_gen: if square 100: break print(square) # 求和 total sum(x**2 for x in range(100)) print(total) # 328350# 矩阵转置 matrix [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] transpose [[row[i] for row in matrix] for i in range(len(matrix[0]))] print(transpose) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]] # 展平二维列表 matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened [num for row in matrix for num in row] print(flattened) # [1, 2, 3, 4, 5, 6, 7, 8, 9]列表推导式# 普通方法 squares [] for i in range(1, 6): squares.append(i**2) print(squares) # [1, 4, 9, 16, 25] # 列表推导式 squares [i**2 for i in range(1, 6)] print(squares) # [1, 4, 9, 16, 25] #带条件推导式 # 过滤偶数 numbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers [x for x in numbers if x % 2 0] print(even_numbers) # [2, 4, 6, 8, 10] # 条件表达式三元运算符 results [x if x % 2 0 else 奇数 for x in range(1, 6)] print(results) # [奇数, 2, 奇数, 4, 奇数] #嵌套循环 # 生成坐标对 coordinates [(x, y) for x in range(3) for y in range(3)] print(coordinates) # [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] # 九九乘法表 multiplication [f{i}×{j}{i*j} for i in range(1, 10) for j in range(1, i1)]# 去除空格和空字符串 raw_data [ apple , banana, , cherry , , date] cleaned [item.strip() for item in raw_data if item.strip()] print(cleaned) # [apple, banana, cherry, date]#嵌套推导式 # 矩阵转置 matrix [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] transpose [[row[i] for row in matrix] for i in range(len(matrix[0]))] print(transpose) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]] # 展平二维列表 matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened [num for row in matrix for num in row] print(flattened) # [1, 2, 3, 4, 5, 6, 7, 8, 9]字典推导式# 创建平方字典 squares {x: x**2 for x in range(1, 6)} print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} # 交换键值对 original {a: 1, b: 2, c: 3} swapped {value: key for key, value in original.items()} print(swapped) # {1: a, 2: b, 3: c} # 过滤字典 scores {张三: 85, 李四: 92, 王五: 78, 赵六: 95} passed {name: score for name, score in scores.items() if score 80} print(passed) # {张三: 85, 李四: 92, 赵六: 95} # 处理字符串列表 fruits [apple, banana, cherry] fruit_lengths {fruit: len(fruit) for fruit in fruits} print(fruit_lengths) # {apple: 5, banana: 6, cherry: 6}# 成绩统计 scores {张三: 85, 李四: 92, 王五: 78, 赵六: 95, 孙七: 88} # 优秀学生90 excellent {name: score for name, score in scores.items() if score 90} print(excellent) # {李四: 92, 赵六: 95} # 成绩等级转换 grades {name: 优秀 if score 90 else 良好 if score 80 else 及格 for name, score in scores.items()} print(grades)集合推导式# 创建平方集合自动去重 squares {x**2 for x in range(-3, 4)} print(squares) # {0, 1, 4, 9} # 提取字符串中的元音字母 text Hello World vowels {char.lower() for char in text if char.lower() in aeiou} print(vowels) # {e, o} # 去重并转换 numbers [1, 2, 2, 3, 3, 3, 4, 5, 5] unique_even {x for x in numbers if x % 2 0} print(unique_even) # {2, 4}# 找出两个列表的共同元素 list1 [1, 2, 3, 4, 5] list2 [4, 5, 6, 7, 8] common {x for x in list1 if x in list2} print(common) # {4, 5}