python中的列表理解_Python中的列表理解list comprehension

列表是Python中的基本数据类型之一。每次遇到一个变量名,后跟一个方括号[]或一个list构造函数,它就是一个能够包含多个项目的列表,使其成为复合数据类型。同样,声明新列表并随后向其中添加一个或多个项目也很容易。

让我们创建一个新的填充列表,例如:

或者我们可以简单地使用append()方法将所需的任何内容添加到列表中:

如果您需要将多个项目附加到同一列表中,该extend()方法将派上用场。您只需要传递要附加到该extend方法的项目列表,如下所示:

如您所见,创建列表并将其附加到其他项目只是小菜一碟。您可以完成此任务,而不必多次调用该.append()方法。

同样,您可以使用for循环将多个项目附加到列表中。例如,我们将必须编写以下代码来为整数1-20创建一个正方形列表。

什么是Python中的列表推导?

简单来说,列表理解是从现有列表创建新列表的过程。或者,您可以说这是Python将for循环附加到列表的独特方法。但是,声明一个列表并将您喜欢的任何内容附加到它已经很简单了。是不是 那么,为什么还要去理解我们的清单呢?

实际上,列表理解比传统列表具有许多优势。首先,代码仅跨越一行,这使得声明和读取更加容易。理解列表也比使用for循环声明一个新列表要麻烦。最后,它还是生成新的填充列表的便捷,快捷和直观的方式。

回到整数1到20的平方,我们可以使用列表理解方法获得相同的结果。这是我们的代码现在的样子:

请注意,用于生成列表项的逻辑是如何用括号括起来的。在下一节中,我们将详细介绍语法。

列表推导的语法

在继续前进之前,必须解释列表理解的语法。这是包含条件的列表理解的基本语法:

表达式在循环之前似乎有些倒退,但这是这样做的。这种顺序大概是这样的,因为如果没有某种类型的分号(Python没有这种类型的分号),很难将表达式放在条件之后。

您可能已经猜到了,“表达式”实际上是当我们执行列表推导中的其余代码时得到的输出。代码本身只是用于循环访问数据集合的for循环。在我们的示例中,我们使用表达式或输出来生成正方形列表。

请注意,条件是可选的,因此就像在上面的示例中一样,我们不需要将其包括在内。

还值得一提的是,我们有一个要循环的列表,一个或多个要迭代的项目,当然还有列表理解和传统for循环中的条件语句。因此,每种方法都具有相同的一般构造,但是不同之处在于您格式化和组织它们的方式。

我们还将看另一个更复杂的示例,以进一步理解列表理解背后的概念。

实际上,我们list_a在上面的示例中遍历了。随后,list_b如果项的值可被4整除,则将其附加到项,然后使用模运算符(%)对其进行检查。在此示例中,我们将看到以下内容打印到控制台:

这是因为12是该数组中唯一可被4整除的数字。

再一次,我们可以使用列表理解来减少为达到相同目标而必须编写的总代码行。

如上所述,for以上语句中的循环遍历了名为的列表list_a。然后,它执行条件语句,该语句检查当前值是否可以被4整除。最后,.append()当确定该值实际上可以被4整除时,它执行该方法。

现在,如果您想用列表理解来编写上面的代码,看起来应该像这样:

如您所见,我们for将跨越三行的循环减少到仅一行。实际上,这就是列表理解的真正美。

何时使用列表推导

在很多情况下,您需要使用列表推导,而您需要根据迭代器生成列表。但是,使用此方法的最佳时间是当您需要根据设置的模式一致地向列表中添加或提取项目时。Python开发人员大多使用它们从通常很大的项目集中提取数据。

让我们假设您有一个成千上万的当前和以前的学生名单,包括他们的名字,他们父亲的名字和地址。每个学生的数据还存储在相应的词典中。但是,如果您只想打印他们的名字怎么办?

我们确实可以选择使用传统for循环遍历列表:

尽管在此示例中,for循环仅用两行代码,但我们甚至不需要编写这么多行。我们可以通过列表理解方法只编写一行代码来完成相同的任务:

结论

列表理解实际上还可以减少您的工作量,这真是太神奇了。但是,一开始它似乎令人困惑。对于以前从未涉足此领域的初学者尤其令人困惑,这主要是因为语法。如果您一直在使用其他语言进行编程,您可能还会发现很难理解这个概念,因为它们中都不存在列表理解功能。掌握列表理解的唯一方法是努力练习。

0

相关文章:input()函数中的漏洞– Python2.x 本文旨在解释和探索Python 2.x中input()函数中的漏洞。在Python 3中,raw_input( […]...

Python中的Inplace运算符| 1(iadd(),isub(),iconcat()…) Python在其定义中提供了执行就地操作的方法,即使用“ 运算符 “模块在单个语句中进行赋值和计算 […]...

Python中的函数装饰器1(简介) 背景 以下是有关Python中的函数的重要事实,可用于了解装饰器函数。 在Python中,我们可以在另一个函数 […]...

Python中的try和except 在错误和异常处理中使用try()的错误 有两种: 语法错误:也称为解析错误,非常基本。当Python解析器无法 […]...

Python | 使用openpyxl模块写入Excel文件 先决条件:使用openpyxl读取Excel文件 Openpyxl是用于读取和写入Excel(扩展名为xlsx […]...

Python程序使用numpy打印NxN的棋盘图案 给定n,为nxn矩阵打印棋盘图案 n = 8的棋盘图案: 它由n * n个正方形组成,白色交替为0,黑色交替为 […]...

卷积神经网络在mnist数据集上的应用 Python CNN基本上是一种被称为卷积神经网络的模型,并且由于其实用性,在最近一段时间它已广受欢迎。CNN使用多层感知器 […]...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值