python数组创建语法[for in range]

use*_*504 2 python list-comprehension

我遇到了以下语法来创建一个 python 数组。这对我来说很奇怪。

谁能给我解释一下?我应该如何学习这种语法?

[str(index) for index in range(100)]
Run Code Online (Sandbox Code Playgroud)

Eli*_*igo 6

首先,这不是数组。这是一个列表。Python 确实有内置数组,但它们很少使用(array如果您感兴趣,请搜索模块)。您看到的结构称为列表理解。这是在纯 Python 中进行矢量化处理的最快方法。让我们来看看一些例子。

简单的列表推导式是这样编写的: [item for item in iterable]- 这将构建一个包含可迭代的所有项目的列表。

实际上,您可以使用表达式或函数对每个项目执行某些操作:[item**2 for item in iterable]- 这将对每个元素进行平方,或者[f(item) for item in iterable]- f 是一个函数。

您甚至可以添加if和这样的else语句[number for number in xrange(10) if not number % 2]- 这将创建一个偶数列表;['even' if not number % 2 else 'odd' for number in range(10)]- 这就是你如何使用 else 语句。

您可以嵌套列表理解[[character for character in word] for word in words]- 这将创建一个列表列表。列表推导式类似于generator expressions,因此您应该在 google Python 文档中搜索更多信息。

列表推导式和生成器表达式是最强大和最有价值的 Python 特性之一。只需开始一个交互式会话并玩一会儿。

聚苯乙烯

还有其他类型的理解可以创建集合和字典。他们使用相同的概念。谷歌他们以获取更多信息。


Art*_*tem 1

我建议您将遇到的所有推导式展开为 for 循环,以更好地理解它们的机制和语法,直到您习惯它们。例如,您的理解可以这样展开:

newlist = []
for index in range(100)
    newlist.append(str(index))
Run Code Online (Sandbox Code Playgroud)

我希望现在一切都清楚了。