news 2026/4/20 21:42:46

Python全栈入门到实战【基础篇 17】循环进阶:推导式大全(列表/字典/集合)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python全栈入门到实战【基础篇 17】循环进阶:推导式大全(列表/字典/集合)

哈喽各位小伙伴!上一节咱们吃透了函数的核心用法,能通过封装逻辑实现模块化开发——但在实际编程中,批量生成或处理数据时,你可能会写出这样的代码:

  • 用3行循环生成一个偶数列表;
  • 用5行代码筛选字典中的符合条件的键值对;
  • 用嵌套循环去重并处理数据,代码层级繁琐。

这些场景下,Python的推导式(Comprehension)能帮你用一行代码替代多行循环,既简洁又高效。推导式本质是“循环+条件判断”的语法糖,支持列表、字典、集合三种核心类型,是处理批量数据的“高效工具”。

这节咱们系统讲解推导式的核心用法,覆盖所有实用场景:

  • 列表推导式:批量生成/筛选列表,替代for+append
  • 字典推导式:批量构建/转换字典,简化键值对操作;
  • 集合推导式:批量去重+处理数据,结合集合特性;
  • 推导式进阶:带条件判断、嵌套推导式、与普通循环的性能对比;
  • 避坑要点:可读性边界、嵌套层级限制、生成器表达式区别。

掌握推导式后,你处理批量数据的代码会更简洁、执行效率更高,还能提升代码的可读性(合理使用前提下)~

文章目录

  • 一、前置引入:为什么需要推导式?
  • 二、核心基础:列表推导式(List Comprehension)
    • 1. 基础语法
      • 语法说明
    • 2. 基础示例(无条件判断)
      • 示例1:生成1-10的平方列表
      • 示例2:将字符串列表转为小写
    • 3. 进阶示例(带条件判断)
      • 示例1:筛选1-20的奇数并乘以2
      • 示例2:筛选字符串列表中长度大于3的元素
    • 4. 高级示例:嵌套列表推导式
      • 示例1:二维列表转一维列表
      • 示例2:筛选二维列表中的偶数
  • 三、核心重点:字典推导式(Dict Comprehension)
    • 1. 基础语法
    • 2. 基础示例(构建字典)
      • 示例1:生成“数字-平方”字典
      • 示例2:用两个列表构建字典(键值对应)
    • 3. 进阶示例(转换/筛选字典)
      • 示例1:交换字典的键和值
      • 示例2:筛选字典中值大于90的键值对
      • 示例3:字典值格式转换(数字转字符串)
  • 四、补充重点:集合推导式(Set Comprehension)
    • 1. 基础语法
    • 2. 核心示例(去重+筛选)
      • 示例1:生成1-10的偶数集合(自动去重)
      • 示例2:字符串去重并转为大写
      • 示例3:筛选列表中大于5的元素并去重
  • 五、推导式进阶:嵌套推导与性能对比
    • 1. 嵌套推导式(列表/字典/集合)
      • 示例1:嵌套列表推导式(生成二维列表)
      • 示例2:嵌套字典推导式(处理嵌套字典)
    • 2. 推导式 vs 普通循环:性能对比
      • 性能测试示例(生成10万条数据)
      • 运行结果(参考)
  • 六、核心避坑要点
    • 1. 可读性优先:避免过度复杂的推导式
    • 2. 集合推导式 vs 列表推导式:去重差异
    • 3. 字典推导式:键必须唯一
    • 4. 推导式与生成器表达式的区别
      • 示例:生成器表达式
  • 七、实战案例:推导式批量处理数据
  • 八、总结
  • 九、专栏订阅

一、前置引入:为什么需要推导式?

在推导式出现之前,批量生成或筛选数据需要写完整的循环结构,代码冗余且不够直观。比如:

# 普通循环:生成1-10的偶数列表(3行代码)even_nums=[]fornuminrange(1,11):ifnum%
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 18:47:13

实时人脸美型功能开发技术挑战:美颜sdk在性能与效果间的取舍

在短视频、直播、视频社交全面爆发的今天,“实时人脸美型”已经从锦上添花,变成了很多产品的基础能力。 用户打开摄像头的第一秒,就在无意识中对美颜效果做出了判断: 顺不顺?像不像我?会不会卡&#xff1f…

作者头像 李华
网站建设 2026/4/18 23:44:25

基于SpringBoot的画师约稿平台毕业设计

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的画师约稿平台,以满足现代数字艺术创作与市场需求之间的对接需求。具体研究目的如下: 首先…

作者头像 李华
网站建设 2026/4/18 21:20:42

基于python调用javascrpt代码:学习笔记

PyExecJS简介 pyexecjs是一个python的库,用于python环境中调用执行javascript代码。对于爬虫逆向来说,这个库是非常合适的。 前期准备 我们需要提前去下载安装node.js node.js官网下载地址:Node.js — 下载 Node.js # 验证 Node.js 版本…

作者头像 李华
网站建设 2026/4/19 19:54:59

Command Injection(命令注入)漏洞及其防御策略

命令注入是一种经典且危险的漏洞类型。这种漏洞能让攻击者像给程序“下错指令”一样,操纵它在主机操作系统上执行任意命令。想象一下,一个原本只是用来显示文件内容的简单工具,却被恶意利用来删除系统文件甚至窃取敏感数据。这究竟是如何发生的?又该如何防范? 什么是命令…

作者头像 李华
网站建设 2026/4/20 2:58:14

Java全栈工程师面试实录:从基础到复杂场景的深度解析

Java全栈工程师面试实录:从基础到复杂场景的深度解析 面试者基本信息 姓名:林浩然 年龄:28岁 学历:硕士 工作年限:5年 工作内容:负责前后端架构设计、微服务开发与优化、项目性能调优。 工作成果&#xf…

作者头像 李华
网站建设 2026/4/16 15:55:35

Flutter for OpenHarmony 实战_随机抽签应用设计与实现

Flutter for OpenHarmony 实战:随机抽签应用设计与实现 欢迎加入开源鸿蒙跨平台社区:开源鸿蒙跨平台开发者社区 文章目录Flutter for OpenHarmony 实战:随机抽签应用设计与实现前言一、抽签算法实现1.1 基础随机选择1.2 多次抽签1.3 权重抽签…

作者头像 李华