首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >24.Python推导式教程:快速初始化各种序列!

24.Python推导式教程:快速初始化各种序列!

作者头像
全栈若城
发布2025-04-26 20:00:23
发布2025-04-26 20:00:23
19300
代码可运行
举报
文章被收录于专栏:若城技术专栏若城技术专栏
运行总次数:0
代码可运行

一、什么是推导式?🤔

推导式(Comprehension)是Python中的一种独特语法,它让我们能用一行代码创建序列(如列表、字典、集合)。就像是一个"魔法公式",帮你快速生成数据!

想象你需要制作一个包含1到10所有数字平方的列表。传统方法需要循环:

代码语言:javascript
代码运行次数:0
运行
复制
# 传统方法:使用for循环
平方列表 = []
for 数字 in range(1, 11):
    平方列表.append(数字 ** 2)
print(平方列表)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

而使用推导式,只需一行:

代码语言:javascript
代码运行次数:0
运行
复制
# 使用列表推导式
平方列表 = [数字 ** 2 for 数字 in range(1, 11)]
print(平方列表)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

是不是简洁多了?这就是推导式的魅力!😍

二、列表推导式:最常用的推导式 📝

1. 基本语法
代码语言:javascript
代码运行次数:0
运行
复制
[表达式 for 变量 in 可迭代对象]
2. 带条件的列表推导式
代码语言:javascript
代码运行次数:0
运行
复制
[表达式 for 变量 in 可迭代对象 if 条件]
3. 生动例子
代码语言:javascript
代码运行次数:0
运行
复制
# 例子1:创建1到10的偶数列表
偶数列表 = [数字 for 数字 in range(1, 11) if 数字 % 2 == 0]
print(偶数列表)  # 输出:[2, 4, 6, 8, 10]

# 例子2:将水果名称转换为大写
水果 = ["苹果", "香蕉", "草莓"]
大写水果 = [名称.upper() for 名称 in 水果]
print(大写水果)  # 输出:['苹果', '香蕉', '草莓']

# 例子3:创建姓名和问候语的组合
名字列表 = ["小明", "小红", "小华"]
问候语 = [f"你好,{名字}!" for 名字 in 名字列表]
print(问候语)  # 输出:['你好,小明!', '你好,小红!', '你好,小华!']

三、字典推导式:快速创建字典 📚

1. 基本语法
代码语言:javascript
代码运行次数:0
运行
复制
{键表达式: 值表达式 for 变量 in 可迭代对象}
2. 生动例子
代码语言:javascript
代码运行次数:0
运行
复制
# 例子1:创建数字及其平方的字典
平方字典 = {数字: 数字**2 for 数字 in range(1, 6)}
print(平方字典)  # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 例子2:将水果列表转换为字典,键为水果名,值为长度
水果 = ["苹果", "香蕉", "草莓"]
水果长度字典 = {水果名: len(水果名) for 水果名 in 水果}
print(水果长度字典)  # 输出:{'苹果': 2, '香蕉': 2, '草莓': 2}

四、集合推导式:创建不重复元素集合 🧩

1. 基本语法
代码语言:javascript
代码运行次数:0
运行
复制
{表达式 for 变量 in 可迭代对象}
2. 生动例子
代码语言:javascript
代码运行次数:0
运行
复制
# 例子1:创建1到10的奇数集合
奇数集合 = {数字 for 数字 in range(1, 11) if 数字 % 2 == 1}
print(奇数集合)  # 输出:{1, 3, 5, 7, 9}

# 例子2:提取字符串中的所有不同字符
文本 = "hello world"
字符集合 = {字符 for 字符 in 文本 if 字符 != ' '}
print(字符集合)  # 输出:{'h', 'e', 'l', 'o', 'w', 'r', 'd'}

五、生成器表达式:节省内存的推导式 💾

生成器表达式看起来像列表推导式,但使用圆括号而不是方括号。它不会立即创建完整的列表,而是按需生成元素,非常适合处理大数据。

1. 基本语法
代码语言:javascript
代码运行次数:0
运行
复制
(表达式 for 变量 in 可迭代对象)
2. 生动例子
代码语言:javascript
代码运行次数:0
运行
复制
# 例子:创建一个包含1到1000000的平方的生成器
平方生成器 = (数字**2 for 数字 in range(1, 1000001))

# 注意:这不会立即计算所有值,而是按需计算
print(next(平方生成器))  # 输出:1(第一个元素)
print(next(平方生成器))  # 输出:4(第二个元素)

# 使用生成器计算前10个平方和
平方生成器2 = (数字**2 for 数字 in range(1, 1000001))
前十个和 = sum(next(平方生成器2) for _ in range(10))
print(f"前10个平方和:{前十个和}")  # 输出前10个平方和

实用小技巧 💡

嵌套推导式

代码语言:javascript
代码运行次数:0
运行
复制
# 创建一个3x3的矩阵,每个元素是行号+列号
矩阵 = [[行+列 for 列 in range(3)] for 行 in range(3)]
print(矩阵)  # 输出:[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

推导式vs循环

  • 推导式适合简单操作和小到中等大小的序列
  • 复杂逻辑或大数据集仍然推荐使用传统循环
  • 代码可读性很重要,过于复杂的推导式反而不好

性能提示

  • 列表推导式通常比等效的for循环快
  • 处理大数据时,考虑使用生成器表达式节省内存
  • 字典推导式比手动构建字典更高效

小结 📌

推导式是Python中非常强大的特性,掌握它们可以:

  • 用更少的代码完成更多工作
  • 提高代码的可读性(当使用得当时)
  • 在某些情况下提升性能
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是推导式?🤔
  • 二、列表推导式:最常用的推导式 📝
    • 1. 基本语法
    • 2. 带条件的列表推导式
    • 3. 生动例子
  • 三、字典推导式:快速创建字典 📚
    • 1. 基本语法
    • 2. 生动例子
  • 四、集合推导式:创建不重复元素集合 🧩
    • 1. 基本语法
    • 2. 生动例子
  • 五、生成器表达式:节省内存的推导式 💾
    • 1. 基本语法
    • 2. 生动例子
  • 实用小技巧 💡
  • 小结 📌
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档