首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第 10章 编写高效的函数
10.1 函数名
10.2 函数大小的权衡
10.3 函数的形参和实参
10.3.1 默认参数
10.3.2 使用*和**向函数传参
10.3.3 使用*创建可变参数函数
10.3.4 使用**创建可变参数函数
10.3.5 使用*和**创建包装函数
10.4 函数式编程
10.4.1 副作用
10.4.2 高阶函数
10.4.3 lambda 函数
10.4.4 在列表推导式中进行映射和过滤
10.5 返回值的数据类型应该不变
10.6 抛出异常和返回错误码
第 11章 注释、文档字符串和类型提示
11.1 注释
11.1.1 注释风格
11.1.2 内联注释
11.1.3 说明性的注释
11.1.4 总结性的注释
11.1.5 “经验之谈”的注释
11.1.6 法律注释
11.1.7 注释的专业性
11.1.8 代码标签和TODO 注释
11.1.9 神奇的注释和源文件编码
11.2 文档字符串
11.3 类型提示
11.3.1 使用静态分析器
11.3.2 为多种类型设置类型提示
11.3.3 为列表、字典等设置类型提示
11.3.4 通过注释向后移植类型提示
第 12章 通过Git管理项目
12.1 Git 提交和仓库
12.2 使用Cookiecutter新建Python项目
12.3 安装Git
12.3.1 配置Git 用户名和电子邮件
12.3.2 安装GUI Git 工具
12.4 Git 的工作流程
12.4.1 Git 是如何追踪文件状态的
12.4.2 为什么要暂存文件
12.5 在计算机上创建Git 仓库
12.5.1 添加供Git 追踪的文件
12.5.2 忽略仓库中的文件
12.5.3 提交修改
12.5.4 从仓库中删除文件
12.5.5 重命名和移动仓库中的文件
12.6 查看提交日志
12.7 恢复历史修改
12.7.1 撤销未提交的本地修改
12.7.2 取消暂存的文件
12.7.3 回滚近期的提交
12.7.4 回滚到单个文件的某次提交
12.7.5 重写提交历史
12.8 GitHub 和git推送命令
12.8.1 将一个已存在的仓库推送到GitHub
12.8.2 克隆已存在的GitHub仓库
当前位置:
首页>>
技术小册>>
Python编程轻松进阶(四)
小册名称:Python编程轻松进阶(四)
### 10.4.4 在列表推导式中进行映射和过滤 在Python编程中,列表推导式(List Comprehension)是一种高效且优雅的方式来创建列表。它不仅使代码更加简洁,还提高了代码的可读性和执行效率。列表推导式允许我们在构建列表的同时进行元素的映射(mapping)和过滤(filtering),这是其强大功能的核心所在。本节将深入探讨如何在列表推导式中结合使用映射和过滤技术,以实现复杂的数据处理任务。 #### 映射(Mapping) 映射是将一个集合中的每个元素通过某种规则转换成另一个集合中的元素的过程。在列表推导式中,映射通常通过表达式实现,该表达式作用于集合中的每个元素,并产生新的元素值。 **示例**: 假设我们有一个数字列表,并希望将其中的每个数字平方。不使用列表推导式,我们可能会这样做: ```python numbers = [1, 2, 3, 4, 5] squared_numbers = [] for number in numbers: squared_numbers.append(number ** 2) print(squared_numbers) # 输出: [1, 4, 9, 16, 25] ``` 使用列表推导式,我们可以更简洁地实现同样的功能: ```python numbers = [1, 2, 3, 4, 5] squared_numbers = [number ** 2 for number in numbers] print(squared_numbers) # 输出: [1, 4, 9, 16, 25] ``` 在这个例子中,`number ** 2` 就是映射表达式,它作用于列表`numbers`中的每个元素。 #### 过滤(Filtering) 过滤则是从集合中选出满足特定条件的元素的过程。在列表推导式中,过滤通过`if`语句实现,该语句紧随迭代变量之后,用于测试每个元素是否满足条件。 **示例:** 假设我们只想保留上面数字列表中大于3的数。不使用列表推导式,代码可能如下: ```python numbers = [1, 2, 3, 4, 5] filtered_numbers = [] for number in numbers: if number > 3: filtered_numbers.append(number) print(filtered_numbers) # 输出: [4, 5] ``` 使用列表推导式,代码可以简化为: ```python numbers = [1, 2, 3, 4, 5] filtered_numbers = [number for number in numbers if number > 3] print(filtered_numbers) # 输出: [4, 5] ``` 在这里,`if number > 3`就是过滤条件,它决定了哪些元素会被包含在新列表中。 #### 映射与过滤的结合 列表推导式最强大的地方在于它能够同时执行映射和过滤操作。这让我们能够在构建新列表时,既转换元素又筛选元素。 **示例:** 假设我们有一个包含员工姓名和薪资的元组列表,我们想要创建一个新列表,其中只包含薪资超过某个阈值(比如5000)的员工的姓名,并将这些姓名转换为大写。 不使用列表推导式,代码可能相对复杂: ```python employees = [('Alice', 4000), ('Bob', 5500), ('Charlie', 4800), ('David', 6000)] high_paid_names = [] for name, salary in employees: if salary > 5000: high_paid_names.append(name.upper()) print(high_paid_names) # 输出: ['BOB', 'DAVID'] ``` 而使用列表推导式,这一任务变得非常简洁: ```python employees = [('Alice', 4000), ('Bob', 5500), ('Charlie', 4800), ('David', 6000)] high_paid_names = [name.upper() for name, salary in employees if salary > 5000] print(high_paid_names) # 输出: ['BOB', 'DAVID'] ``` 在这个例子中,`name.upper()`是映射操作,它转换了员工的姓名;`if salary > 5000`是过滤条件,它决定了哪些员工的姓名会被包含在新列表中。两者在列表推导式中无缝结合,实现了复杂的数据处理需求。 #### 进阶应用 列表推导式不仅限于简单的映射和过滤,还可以嵌套使用,实现更复杂的逻辑。例如,我们可以使用嵌套的列表推导式来创建一个二维列表的转置,或者从一个多层嵌套的字典中提取特定的数据。 此外,列表推导式还可以与其他Python数据结构(如集合、元组)结合使用,以及与其他函数式编程特性(如`filter()`和`map()`函数)相辅相成,共同构建出强大而灵活的数据处理流程。 #### 总结 列表推导式是Python中一种强大的工具,它允许我们以简洁、高效的方式在构建列表的同时进行元素的映射和过滤。通过结合使用映射表达式和过滤条件,我们可以轻松处理复杂的数据转换和筛选任务。掌握列表推导式的用法,将使你的Python代码更加简洁、易读且高效。在《Python编程轻松进阶(四)》的后续章节中,我们将继续探索Python的更多高级特性,帮助你在编程之路上不断进阶。
上一篇:
10.4.3 lambda 函数
下一篇:
10.5 返回值的数据类型应该不变
该分类下的相关小册推荐:
Python与办公-玩转Word
Python与办公-玩转Excel
剑指Python(万变不离其宗)
Python合辑12-面向对象
Python机器学习实战
Python编程轻松进阶(一)
Python合辑6-字典专题
Python爬虫入门与实战开发(上)
Python机器学习基础教程(上)
Python编程轻松进阶(二)
Python合辑8-变量和运算符
机器学习算法原理与实战