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

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

相关推荐
sulikey21 小时前
深入讲解:什么是 RAII(资源获取即初始化)——原理、实现、面试常考点与实战示例
c++·面试·智能指针·raii·shared_ptr·auto_ptr·资源获取即初始化
还是转转21 小时前
AI Code Review 工具
人工智能·代码复审
艾莉丝努力练剑21 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
程序员三藏1 天前
Jmeter自动化测试
自动化测试·软件测试·python·测试工具·jmeter·测试用例·接口测试
拓端研究室1 天前
专题:2025AI产业全景洞察报告:企业应用、技术突破与市场机遇|附920+份报告PDF、数据、可视化模板汇总下载
大数据·人工智能·pdf
吴佳浩1 天前
Langchain 浅出
python·langchain·llm
smj2302_796826521 天前
解决leetcode第3753题范围内总波动值II
python·算法·leetcode
lumi.1 天前
Vue + Element Plus 实现AI文档解析与问答功能(含详细注释+核心逻辑解析)
前端·javascript·vue.js·人工智能
mortimer1 天前
破局视频翻译【最后一公里】––从语音克隆到口型对齐的完整工程思路
python·github·aigc