跳到主要内容

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

🧩 为什么需要推导式?

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

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

传统做法往往需要循环语句,代码冗长。而推导式(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 ...}返回字典结构