logo

ジュリアでコンプリヘンションを理解する方法 📂ジュリア

ジュリアでコンプリヘンションを理解する方法

コード

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