ジュリアでコンプリヘンションを理解する方法
コード
JuliaでもPythonのようにコンプリヘンションcomprehensionが可能です。コンプリヘンションは、配列を生成する方法の一つで、条件式自体を配列に記入することを指します。
例えば、$0$から$9$までの整数を順に要素とする配列を定義したい場合、for
ループ自体を配列に入れればよいです。
julia> [i for i ∈ 0:9]
10-element Vector{Int64}:
0
1
2
3
4
5
6
7
8
9
julia> [i*ones(8) for i ∈ 1:9]
9-element Vector{Vector{Float64}}:
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
[3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0]
[4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0]
[5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0]
[6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0]
[7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0]
[8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0]
[9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0]
julia> stack([i*ones(8) for i ∈ 1:9], dims=2)
8×9 Matrix{Float64}:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
二重for
文も可能です。
julia> X = 1:4
1:4
julia> Y = [-1, 0, 1]
3-element Vector{Int64}:
-1
0
1
julia> [x*y for x=X, y=Y]
4×3 Matrix{Int64}:
-1 0 1
-2 0 2
-3 0 3
-4 0 4
環境
- OS: Windows11
- Version: Julia 1.10.0