Python 列表推导式与生成器表达式2024 年 8 月 29 日 | 4 分钟阅读 在本教程中,我们将讨论列表推导式和生成器表达式之间的一些重要区别。它们的语法非常相似,但它们有一些显著的差异。让我们简要介绍一下列表推导式和生成器表达式。 什么是列表推导式?列表推导式是一种创建列表的绝佳方式。它允许我们使用循环和条件语句来创建列表。我们可以用更少的代码完成任务。正常的列表需要 3-4 行代码,而列表推导式可以在一行内完成。让我们理解下面的代码。 示例 - 输出 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 我们可以用列表推导式在一行代码中完成同样的事情。 示例 - 输出 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 正如我们所见,列表推导式的语法包含了 for 循环和 if 条件。我们也可以使用嵌套的 for 循环,但这会降低可读性。 让我们看另一个例子。 示例 - 使用普通列表 输出 square_cube = [0, 1, 4, 27, 16, 125, 36, 343, 64, 729] 示例 - 使用列表推导式 输出 With List Comprehension = [0, 1, 4, 27, 16, 125, 36, 343, 64, 729] 这两个代码做的事情是相同的,根据条件 num%2 ==0 过滤数字,并相应地执行 square_cube.append(num**2) 或 square_cube.append(num**3)。 什么是生成器表达式?生成器表达式类似于列表推导式,但它使用圆括号 () 和方括号 []。与列表不同,它返回一个生成器对象。生成器不会将整个序列保存在内存中,而是在需要时生成下一个元素。普通函数在调用 return 语句时终止。但生成器函数使用 yield 语句,它会保存函数的当前状态,并在下次调用函数时从同一状态恢复。 生成器表达式提供了一种无需使用 yield 关键字即可创建生成器的方式。 让我们理解下面的例子。 示例 - 输出 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 示例 - 生成器表达式 输出 <generator object <genexpr> at 0x7fa0e3f3b580> 上面的代码返回一个生成器对象;要打印表达式的值,我们需要迭代生成器对象。 输出 0 2 4 6 8 10 12 14 16 18 在这里我们获得了所有元素。现在我们来看看生成器表达式和列表推导式之间的区别。 生成器表达式与列表推导式之间的区别两者的语法都非常相似,唯一的区别在于列表推导式用方括号括起来,而生成器表达式用圆括号括起来。 生成器按需生成元素,这意味着它只计算需要的值。而普通函数在遇到 return 语句时就终止了,Python 则会为整个列表保留内存。 生成器表达式相比列表的主要优势是内存效率。生成器表达式比列表更节省内存。让我们通过以下示例来理解。 示例 - 输出 在创建列表时,我们可以看到区别,Python 会为整个列表预留内存并计算它将消耗的总内存。而生成器表达式则按需生成序列的下一个元素。它计算下一个值所需的内存。 生成器速度较慢,因为序列的元素每次都需要计算和生成。为了生成下次的值,函数的当前状态必须被保存。 示例 - 输出 14.614160199999986 示例 - 输出 0.9265093000000206 正如我们所见,执行时间存在显著差异。生成器表达式比列表推导式快得多,并且更节省时间。 结论本教程包括了列表推导式和生成器表达式的基本介绍。我们还学习了它们之间的一些重要区别。列表推导式有效地减少了代码行数,而生成器表达式则按需生成值。有些人认为推导式是更 Pythonic 的编码方式。选择哪种方式最适合您,由您决定。 下一主题Python 输出格式化 |
? 集合和列表是 Python 中的数据结构,由数据元素组组成。但是,这两种数据结构也存在一些显著差异。具体来说,列表执行少量数学运算,这些运算对于搜索特定元素很有用 -...
阅读 4 分钟
简介:在本文中,我们将讨论 Python 的布尔值 False。例如,1==1 为 True,但 2<1 为 False。布尔值变量的值要么为 True,要么为 False。我们内置的变量统计类型可以是布尔值。在...
阅读 3 分钟
自动化重复性工作是一个好主意。开发人员和系统管理员经常使用 shell 脚本来自动化重复性过程,例如健康检查和文件备份。然而,随着这些活动变得越来越复杂,shell 脚本可能会变得更难以维护。幸运的是,Python 可以用于...
阅读 22 分钟
简介:在本教程中,我们将学习 Selenium Python 中的 fullscreen_window 驱动程序方法。Selenium 模块用于使用 Python 进行自动化测试。Selenium Python 绑定提供了一个简单的 API。使用 Selenium WebDriver,此 API 用于编写功能或验收测试。网页...
阅读 3 分钟
众所周知,Python 是一种标准的脚本语言,因为它具有多功能特性。在下面的教程中,我们将了解如何借助 tkinter 和... 构建一个 GUI 应用程序来关闭、重启和注销计算机。
阅读 24 分钟
让我们了解一种使用 NumPy 在 Python 中生成带有浮点数点数组的勒让德多项式范德蒙德矩阵的良好方法。示例:当我们给出一个数组作为输入时,则该数组为:[-1.67 0.81 -3.57 1.6 2.8] 结果:[[ 1.00000e+00...
阅读 4 分钟
? 编程语言Python的受欢迎程度持续上升。Python是一种高级语言,它优先考虑可读性而非复杂性。由于其简单的缩进系统,它成为研究人员和程序员的首选语言。这就是为什么值得学习Python编程的原因...
阅读 6 分钟
Bokeh 是一个用于数据可视化的 Python 库。它使用 HTML 和 JavaScript 语言创建其绘图,并且它还针对现代网站浏览器,以提供优雅的演示、新颖图形的简洁构建以及良好的高性能交互性。在本教程中,我们将学习如何...
阅读 2 分钟
Boost Python 模块是一个 C++ 库,可以实现 Python 和 C++ 之间的无缝互操作性。它提供了将 C++ 类和函数公开给 Python 的工具,允许它们像用 Python 编写的一样使用。使用 Boost Python,可以定义 C++ 类...
阅读 10 分钟
在本教程中,我们将学习 Python pendulum 库。我们将讨论其功能和用法。Python 提供了 datetime 模块,它是处理日期和时间最重要的库之一,它非常灵活,并附带许多有用的方法。然而,...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India