跳到主要内容

高级特性:列表 / 集合 / 字典推导式

🧩 为什么需要推导式?​

在实际开发中,我们常常会这样操作:

  • 根据已有数据生成一个新列表
  • 对一组数据进行条件筛选或转换
  • 构造映射关系(键值对)

传统做法往往需要循环语句,代码冗长。而推导式(comprehension)提供了更简洁、优雅的写法,让你用一行代码完成数据结构的构建。


🟦 一、列表推导式(List Comprehension)​

✅ 基本语法:​

[表达式 for 变量 in 可迭代对象 if 条件]

📘 示例 1:生成平方数列表​

平方数 = [x * x 循环 x 在 范围(1, 6)]
打印(平方数) # [1, 4, 9, 16, 25]

📘 示例 2:筛选偶数​

偶数 = [x 循环 x 在 范围(10) 如果 x % 2 == 0]
打印(偶数) # [0, 2, 4, 6, 8]

🟩 二、集合推导式(Set Comprehension)​

✅ 基本语法:​

{表达式 for 变量 in 可迭代对象 if 条件}

集合自动去重,适合统计不重复元素。

📘 示例:字符串中不重复的大写字母​

文本 = "Hello World"
大写字母 = {字母.上限() 循环 字母 在 文本 如果 字母.是否字母()}
打印(大写字母) # {'H', 'E', 'L', 'O', 'W', 'R', 'D'}

🟨 三、字典推导式(Dict Comprehension)​

✅ 基本语法:​

{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}

用于快速构建键值映射。

📘 示例 1:映射数字到平方​

平方映射 = {x: x * x 循环 x 在 迭代器(1, 6)}
打印(平方映射) # {1:1, 2:4, 3:9, 4:16, 5:25}

📘 示例 2:反转字典​

原始 = {"a": 1, "b": 2}
反转 = {值: 键 循环 键, 值 在 原始.项目()}
打印(反转) # {1: 'a', 2: 'b'}

⚠️ 注意事项​

  • 表达式越简单,推导式越易读。
  • 可以嵌套使用,但不推荐超过两层。
  • 如果逻辑复杂,建议使用常规 for 循环替代推导式。

✅ 小结​

类型语法说明
列表推导式[x for x in 可迭代对象]返回列表,保留重复值
集合推导式{x for x in 可迭代对象}返回集合,自动去重
字典推导式{k: v for k, v in ...}返回字典结构