我在做一个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)]
这两部分都包含了一个列表推导式。我们先来评估第一个部分。
[[i+j] for i in range(5)]
这类似于:
elements = []for i in range(5): elements.append([i + j])
这会产生:
[[0], [1], [2], [3], [4]]
外层循环会执行这个任务100次,但每次运行时都会将内层循环的起始值增加1。因此,我们生成了100个列表,每个列表包含5个元素,每个元素又包含一个单元素列表。