苦练Python第28天:列表推导式

苦练Python第28天:列表推导式

前言

大家好,我是倔强青铜三 。欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎来到 苦练Python 第 28 天!今天解锁 列表推导式------把多行循环浓缩成一行,代码瞬间优雅又高效。🚀


📦 今日收获清单

  • 列表推导式语法与核心优势
  • 条件过滤 if / if-else 写法
  • 嵌套列表展开技巧
  • 真实场景:提取数字、过滤邮箱、去重等
  • 额外彩蛋:字典推导式 & 集合推导式

🧱 什么是列表推导式?

一句话:用一行代码生成列表

等价于 for 循环 + append,但更短更快。

🔹 基本语法

python 复制代码
[表达式 for 变量 in 可迭代对象]

相当于:

python 复制代码
result = []
for 变量 in 可迭代对象:
    result.append(表达式)

🔍 示例 1:平方数

✅ 传统写法

python 复制代码
squares = []
for i in range(5):
    squares.append(i ** 2)

✅ 一行写法

python 复制代码
squares = [i ** 2 for i in range(5)]

🔍 示例 2:批量转大写

python 复制代码
names = ["alice", "bob", "charlie"]
upper_names = [name.upper() for name in names]
print(upper_names)  # ['ALICE', 'BOB', 'CHARLIE']

❓ 为什么用推导式?

  • ✅ 更短、更清晰
  • ✅ 执行更快
  • ✅ 可读性高(简单场景)

🔀 条件过滤

🔸 语法

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

示例:只留偶数

python 复制代码
evens = [i for i in range(10) if i % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8]

🔄 表达式里写 if-else

python 复制代码
labels = ["even" if i % 2 == 0 else "odd" for i in range(5)]
print(labels)  # ['even', 'odd', 'even', 'odd', 'even']

🔁 嵌套列表推导式

示例:二维列表展平

python 复制代码
matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
print(flattened)  # [1, 2, 3, 4, 5, 6]

🧪 实战场景

✅ 1. 提取字符串中的数字

python 复制代码
text = "Age: 24, Score: 89"
digits = [char for char in text if char.isdigit()]
print(digits)  # ['2', '4', '8', '9']

✅ 2. 过滤有效邮箱

python 复制代码
emails = ["a@gmail.com", "b@site", "c@yahoo.com"]
valid = [email for email in emails if "@" in email and "." in email]
print(valid)  # ['a@gmail.com', 'c@yahoo.com']

✅ 3. 列表去重

python 复制代码
data = [1, 2, 2, 3, 4, 4]
unique = list({x for x in data})
print(unique)  # [1, 2, 3, 4]

🧠 技巧 & 最佳实践

  • 👍 简单转换优先用推导式
  • 🚫 避免过度嵌套,复杂逻辑用循环保证可读
  • 🧹 保持一行不超 80 字符,必要时换行

📚 彩蛋:字典 & 集合推导式

🧾 字典推导式

python 复制代码
squares = {x: x ** 2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

🔁 集合推导式

python 复制代码
unique = {char for char in "hello"}
# {'h', 'e', 'l', 'o'}

🧭 今日复盘

  • 掌握一行生成列表的写法
  • 会用 if/if-else 做过滤与映射
  • 能展开二维列表、提取数字、过滤邮箱
  • 顺手学会字典 & 集合推导式

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

相关推荐
猫头虎1 分钟前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
h64648564h16 分钟前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
数据与后端架构提升之路18 分钟前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
忆~遂愿21 分钟前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
Liue6123123125 分钟前
YOLO11-C3k2-MBRConv3改进提升金属表面缺陷检测与分类性能_焊接裂纹气孔飞溅物焊接线识别
人工智能·分类·数据挖掘
一切尽在,你来34 分钟前
第二章 预告内容
人工智能·langchain·ai编程
八零后琐话36 分钟前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python
23遇见37 分钟前
基于 CANN 框架的 AI 加速:ops-nn 仓库的关键技术解读
人工智能
Codebee1 小时前
OoderAgent 企业版 2.0 发布的意义:一次生态战略的全面升级
人工智能