我是一名新程序员,但我不理解:
np.array([range(i, i+3) for i in [2,4,6]])
我知道在range函数中有一个开始,停止和步进,但是这里的写法大不相同。
输出为3 * 3数组
234
456
678
我不知道这个数组是如何产生的。 I + 3是什么意思?是2,4,6 x值吗?在这种情况下,如果for循环到底在做什么呢?迭代了什么?
感谢您的帮助。
答案 0 :(得分:2)
如果我稍微破坏一下代码行,我可以告诉你发生了什么。
下面一行是列表理解,即return I
,其中I
设置为列表[2,4,6]中的每个数字。这将返回一个看起来像[2,4,6]
的列表。因此,这实际上是没有用的,因为您没有在操作原始列表。
[I for I in [2,4,6]]
将其放在np.array()
中时,它只是从列表中创建一个数组。
现在,使用以下代码,您将遍历2-5范围内的每个数字,但不包括5(5是I + 3)
for i in range(2,5):
print(i)
2
3
4
您也可以
for i in range(2,5):
print(np.array([range(2,4)]))
[[2 3]]
[[2 3]]
[[2 3]]
哪个循环执行3次,并打印一个数组,其中包含2-4的范围。
将所有内容组合在一起
[range(I, I+3) for I in [2,4,6]]
您要说的是,为列表[2,4,6]
中的每个数字返回一个从该数字到该数字+ 3的范围,并将其放入一个列表中,该列表将返回
[range(2, 5), range(4, 7), range(6, 9)]
然后将其转换为数组以获取
array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])
答案 1 :(得分:0)
np.array( # This is a numpy library's 2D data structure array.
[
range(i, i+3) # range function which produces iterator from i to i+2 (exclusive of end) i.e. if i = 1, range(1, 4) will give [1, 2, 3]
for i in [2,4,6] # Basic list comprehension for loop
]
)