苦练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 做过滤与映射
  • 能展开二维列表、提取数字、过滤邮箱
  • 顺手学会字典 & 集合推导式

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

相关推荐
技术与健康33 分钟前
LLM实践系列:利用LLM重构数据科学流程07 - 工程化实践与挑战
人工智能·机器学习·重构·大模型工程化实践
MobotStone43 分钟前
AI Agent工程师≠Prompt工程师:能力断层在哪
人工智能
深瞳智检1 小时前
目标检测数据集 第007期-基于yolo标注格式的茶叶病害检测数据集(含免费分享)
人工智能·深度学习·yolo·目标检测·计算机视觉
区块链蓝海1 小时前
UPCX与日本电信公司NTT就新一代去中心化支付系统签署合作协议
人工智能·web3·区块链
berling001 小时前
【论文阅读 | arXiv 2025 | WaveMamba:面向RGB-红外目标检测的小波驱动Mamba融合方法】
论文阅读·人工智能·目标检测
CHEN5_021 小时前
时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评
数据库·人工智能·ai·架构·时序数据库
top_designer1 小时前
作品集PDF又大又卡?我用InDesign+Acrobat AI构建轻量化交互式文档工作流
人工智能·pdf·自动化·设计规范·acrobat·indesign·交互式pdf
WCL-JAVA1 小时前
java生成带水印的pdf文件
java·python·pdf
涡能增压发动积1 小时前
MySQL数据库为何逐渐黯淡,PostgreSQL为何能新王登基
人工智能·后端
瓦力wow2 小时前
Pytorch安装详细步骤
人工智能·pytorch·python