Set(集合)は、Julia言語のコレクションのひとつである。
Base.Set はコレクションの一種である。Julia 言語には、以下に示すコレクションがある。
コレクション | 順序 | 名前 | 値の重複 | 要素の追加・変更 |
---|---|---|---|---|
Core.Array | ✓ | ✗ | ✓ | ✓ |
Core.NamedTuple | ✓ | ✓ | ✓ | ✗ |
Core.Tuple | ✓ | ✗ | ✓ | ✗ |
Base.Dict | ✗ | ✓ | ✓ | ✓ |
Base.Matrix | ✓ | ✗ | ✓ | ✓ |
Base.Set | ✗ | ✗ | ✗ | ✗ |
Base.Vector | ✓ | ✗ | ✓ | ✓ |
Base.Set は以下に示す特徴を持つ。
上記の特徴を持つコレクションは、一般的に「集合」と呼ばれる。
Set{T} <: AbstractSet{T}
集合を作成する。
julia> a = Set(["foo", "bar", "baz"])
Set{String} with 3 elements:
"bar"
"baz"
"foo"
ひとつの集合の中に異なるデータ型が混在しても構わない。
julia> b = Set([1, "foo"])
Set{Any} with 2 elements:
1
"foo"
型を指定して集合を定義することができる。データの型は typeof 関数で調べることができる。
julia> a = Set(["foo", "bar", "baz"])
Set{String} with 3 elements:
"bar"
"baz"
"foo"
julia> typeof(a)
Set{String}
集合は値のみを持つことができる。各々の値に名前を付けることはできない。Key-Valueで言えば、キーのみを格納できる。
集合は値の順序性を保持することはできない。
julia> a = Set([1, 2, 3, 4])
Set{Int64} with 4 elements:
4
2
3
1
julia> b = Set([3, 4, 5, 6])
Set{Int64} with 4 elements:
5
4
6
3
集合は重複する値を持つことはできない。
julia> a = Set([1, 1, 2])
Set{Int64} with 2 elements:
2
1
julia> x = Set([1, 2.0, "foo"])
Set{Any} with 3 elements:
"foo"
2.0
1
julia> for i in x
println(i)
end
foo
2.0
1
値が集合に含まれているかどうかは、in関数または ∈ 演算子を使う。
julia> a = Set([1, 2, 3, 4])
Set{Int64} with 4 elements:
4
2
3
1
julia> in(1, a)
true
julia> 1 ∈ a
true
julia> in(5, a)
false
julia> 5 ∈ a
false
和集合を求めるには、union 関数または ∪ 演算子を使う。
julia> a = Set([1, 2, 3, 4])
Set{Int64} with 4 elements:
4
2
3
1
julia> b = Set([3, 4, 5, 6])
Set{Int64} with 4 elements:
5
4
6
3
julia> c = union(a, b)
Set{Int64} with 6 elements:
5
4
6
2
3
1
julia> c = a ∪ b
Set{Int64} with 6 elements:
5
4
6
2
3
1
積集合を求めるには、intersect 関数または ∩ 演算子を使う。
julia> a = Set([1, 2, 3, 4])
Set{Int64} with 4 elements:
4
2
3
1
julia> b = Set([3, 4, 5, 6])
Set{Int64} with 4 elements:
5
4
6
3
julia> c = intersect(a, b)
Set{Int64} with 2 elements:
4
3
julia> c = a ∩ b
Set{Int64} with 2 elements:
4
3
差集合を求めるには、setdiff 関数を使う。
setdiff 関数は、第1引数の集合には含まれていて、第2引数の集合には含まれていない値を返す。
julia> a = Set([1, 2, 3, 4])
Set{Int64} with 4 elements:
4
2
3
1
julia> b = Set([3, 4, 5, 6])
Set{Int64} with 4 elements:
5
4
6
3
julia> c = setdiff(a, b)
Set{Int64} with 2 elements:
2
1
julia> c = setdiff(b, a)
Set{Int64} with 2 elements:
5
6
空の集合を定義することができる。
julia> a = Set()
Set{Any}()
集合に要素を追加するには、push! 関数を使う。
julia> a = Set()
Set{Any}()
julia> push!(a, 1)
Set{Any} with 1 element:
1
julia> push!(a, 2)
Set{Any} with 2 elements:
2
1
集合から要素を削除するには、pop! 関数を使う。
julia> a = Set([1, 2, 3])
Set{Int64} with 3 elements:
2
3
1
julia> pop!(a, 1)
1
julia> pop!(a, 3)
3
julia> a
Set{Int64} with 1 element:
2
Base.sum 関数を使って、Base.Set 各要素の合計値を求めることができる。
julia> sum(Set([1, 2, 3]))
6
JuliaLang.org contributors 2023. Julia Documentation