如何获取Julia中从1到n的数字列表?

not*_*bot 5 range julia

在MATLAB中,您可以编写1:n。朱莉娅(Julia)中是否有与此表达类似的东西?

Mat*_* B. 7

是的,1:n在Julia中有一些与Matlab非常相似的东西。是1:n

但是有一些区别。Matlab 1:n会创建一个“行向量”,这很重要,因为Matlab在列上进行迭代。如果您看Matlab的1:n有趣之处,它会神奇地变成一个存储所有元素的密集数组,但是如果您仔细地避免看它,我相信它可以避免为它完全分配空间-这就是Matlab的linter推荐使用(1:n)而不是的原因[1:n]

相反,Julia's 1:n是真正的列向量,始终只使用两个整数来定义自己。实际上,它将所有元素真正存储到内存中的唯一时间是您是否要求(例如,使用collect)。但是,在几乎所有情况下,都可以将其像真实矢量一样使用,而无需存储其结果。它会非常高效地动态生成其元素。它可能看起来有点奇怪,因为它只打印为1:n,但实际上是一个数组。您甚至可以用它做线性代数:

julia> r = 1:4
1:4

julia> r[3]
3

julia> A = rand(0:2, 3, 4)
3×4 Array{Int64,2}:
 0  1  2  2
 1  1  1  2
 1  0  2  1

julia> A * r
3-element Array{Int64,1}:
 16
 14
 11
Run Code Online (Sandbox Code Playgroud)


not*_*bot 6

我想我一直在寻找

collect(1:n)
Run Code Online (Sandbox Code Playgroud)

  • 这可行,但是您是否强烈需要完整的数字列表?范围“1:n”本身可以在几乎所有使用列表的情况下使用,并且如果“n”很大,效率会更高。 (12认同)