Warm tip: This article is reproduced from serverfault.com, please click

python 3.x-想了解复杂的功能

(python 3.x - Trying to understand complex function)

发布于 2020-11-29 18:58:45

我正在做这个AI项目,我需要创建一个包含5个连续数字的数组。例如[[[1],[2],[3],[4],[5]]。幸运的是,我下面的教程,并获得该行做到这一点:Data = [[[i+j] for i in range(5)] for j in range(100)]我想知道这是什么意思。我对Python有很深的了解,但从未使用过这种表示法。

Questioner
DragonflyRobotics
Viewed
11
Thymen 2020-11-30 03:12:40

代码

Data = [[[i+j] for i in range(5)] for j in range(100)]

可以分为两部分:

[[i+j] for i in range(5)]

[[[i+j] for i in range(5)] for j in range(100)]

他们两个都包含列表理解让我们评估第一个。

[[i+j] for i in range(5)]

这类似于:

elements = []
for i in range(5):
    elements.append([i + j]) 

产生:

[[0], [1], [2], [3], [4]]

外循环执行此任务一百次,但是每次运行都会将内循环起始值增加1。因此,我们生成100个列表,其中包含5个元素的列表,每个列表包含1个元素的列表。