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

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

相关推荐
聚客AI5 小时前
🌈从实验室到生产线:LLM工程师必须掌握的八大实战技能
人工智能·llm·agent
SunnyDays10116 小时前
Python 高效实现 PDF 转 Word:告别手动复制粘贴
python·pdf转word·pdf转docx·pdf转doc·pdf到word转换
明天再做行么6 小时前
AI产品经理学习资料
人工智能·产品经理
cetcht88886 小时前
从 “有人值守” 到 “少人运维”:智能巡检机器人重塑配电室管理模式
大数据·运维·人工智能·机器人
阿正的梦工坊6 小时前
介绍 SWE-bench:语言模型能否解决真实世界的 GitHub 问题?
人工智能·语言模型·github
白水清风6 小时前
【基础】关于函数式编程的知识
前端·javascript·面试
hhzz6 小时前
Pythoner 的Flask项目实践-绘制点/线/面并分类型保存为shpfile功能(Mapboxgl底图)
python·flask·gis·mapboxgl
嘀咕博客6 小时前
月匣 - 百度推出的AI情感陪伴与剧情互动应用
人工智能·百度·ai工具
新加坡内哥谈技术6 小时前
Claude Code 的“AI优先”
人工智能
豆芽8196 小时前
模糊控制Fuzzy Control
人工智能·算法·模糊控制