显示与Julia列表理解的交互

时间:2017-12-14 21:16:23

标签: julia

julia> display([i*j for i=1:3, j=1:3])

3×3 Array{Int64,2}:
 1  2  3
 2  4  6
 3  6  9

julia> display([i*j for i=1:3, j=1:3 i>=j])

6-element Array{Int64,1}:
 1
 2
 3
 4
 6
 9

不出意外。我想要的是:     3×3阵列{Int64,2}:      1      2 4      3 6 9

我认为需要一个for循环。我不想要的是生成整个数组,然后过滤掉或替换它们。

虽然示例是对称的,但它与q并不真正相关。任何f(i,j)都可以代替i * j。 (对称与否)

1 个答案:

答案 0 :(得分:4)

我想你想写[i*j for i=1:3, j=1:3 if i>=j]if条件将始终使您的结果成为矢量。

如何避免生成整个数组,例如:

x = Matrix{Int}(3,3)
for i in 1:3, j in 1:i
    x[i,j] = i*j
end
y = LowerTriangular(x)