试图理解复杂的功能

Trying to understand complex function

我正在做这个 AI 项目,我需要在其中创建一个包含任意 5 个连续数字的数组。例如 [[[1],[2],[3],[4],[5]]]。幸运的是,我正在学习教程并得到了这条线来完成它:Data = [[[i+j] for i in range(5)] for j in range(100)]。我想知道这是什么意思。我非常了解 Python 但从未使用过这种表示法。

代码

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)]

它们都包含一个list comprehension。先评价一下吧

[[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 个元素的列表。