【问题标题】:Need help understanding this range function需要帮助理解这个范围函数
【发布时间】:2020-08-18 04:57:27
【问题描述】:

我是新程序员,不懂:

np.array([range(i, i+3) for i in [2,4,6]])

我知道在 range 函数中有一个 start 、 stop 和 step ,但是这里的写法完全不同。

输出是一个 3*3 的数组

234
456
678

我不明白这个数组是怎么来的。 I+3 是什么意思?是 2,4,6 x 值吗?如果在这种情况下 for 循环在做什么呢?它在迭代什么?

感谢您的帮助。

【问题讨论】:

  • "使用列表推导,重复 range(i, i+3)

标签: python python-3.x numpy


【解决方案1】:

如果我稍微分解一下那行代码,我可以告诉你会发生什么。

下面一行是一个列表推导,它表示返回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]])

【讨论】:

  • 一个写得很好的答案。
【解决方案2】:
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
    ]
)

【讨论】:

  • 谢谢!!!!谢谢两位的帮助!!这让我很困惑
猜你喜欢
  • 2019-08-11
  • 2020-07-04
  • 1970-01-01
  • 2014-03-10
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2016-04-01
相关资源
最近更新 更多