返回介绍

列表解析

发布于 2024-01-29 22:24:17 字数 1608 浏览 0 评论 0 收藏 0

处理序列的操作和列表的方法中,Python还包括了一个更高级的操作,称作列表解析表达式(list comprehension expression),从而提供了一种处理像矩阵这样结构的强大工具。例如,假设我们需要从列举的矩阵中提取出第二列。因为矩阵是按照行进行存储的,所以通过简单的索引即可获取行,使用列表解析可以同样简单地获得列。

列表解析源自集合的概念。它是一种通过对序列中的每一项运行一个表达式来创建一个新列表的方法,每次一个,从左至右。列表解析是编写在方括号中的(提醒你在创建列表这个事实),并且由使用了同一个变量名的(这里是row)表达式和循环结构组成。之前的这个列表解析表达基本上就是它字面上所讲的:“把矩阵M的每个row中的row[1],放在一个新的列表中”。其结果就是一个包含了矩阵的第二列的新列表。

实际应用中的列表解析可以更复杂:

例如,这里的第一个操作,把它搜集到的每一个元素都加了1,第二个使用了一个if条件语句,通过使用%求余表达式(取余数)过滤了结果中的奇数。列表解析创建了新的列表作为结果,但是能够在任何可迭代的对象上进行迭代。例如,这里我们将会使用列表解析去步进坐标的一个硬编码列表和一个字符串:

列表解析以及相关的内容函数map和filter比较复杂,本书不过多讲述了。这里简要说明的目的是描绘出Python中有简单的工具,也有高级的工具。列表解析是一个可选的特性,在实际应用中比较方便,并常常具有处理速度上的优势。它们也能够在Python的任何的序列类型中发挥作用,甚至一些不属于序列的类型。你将会在本书后面学到更多这方面的内容。

然而,作为一个预览,我们会发现在Python的最近版本中,括号中的解析语法也可以用来创建产生所需结果的生成器(例如,内置的sum函数,按一种顺序汇总各项):

内置函数map可以做类似的事情,产生对各项运行一个函数的结果。在Python 3.0中,将其包装到列表中,会使其返回所有值:

在Python 3.0中,解析语法也可以用来创建集合和字典:

实际上,在Python 3.0中,列表、集合和字典都可以用解析来创建:

要理解生成器、集合和字典这样的对象,我们必须继续学习。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文