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

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

相关推荐
weixin_468466853 小时前
从“看懂”到“做到”:视觉-语言-动作模型如何让机器人真正执行指令
人工智能·ai·机器人·大语言模型·前沿科技
朋友圈自动点赞工具3 小时前
科学AI插件化:从蛋白质结构到古籍修复
人工智能
龙粤GEO3 小时前
实体Entity在GEO中代表什么含义
人工智能
夕除4 小时前
Redis 过期策略
redis·笔记·面试
前端精髓4 小时前
结构化输出with_structured_output(抽卡)
python·langchain
尹人入圣4 小时前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
剑雨巍巍5 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular5 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康5 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区5 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人