Мн

Множини у Julia

1 вправа

Про концепцію Множини

A Set - це колекція елементів із такими властивостями:

  • Невпорядкована.
  • Елементи унікальні, тому спроби додати дублікати мовчки ігноруються.
  • Підтримує багато операцій, спільних із математичними множинами.

Створюймо їх за допомогою конструктора Set(), використовуючи як параметр будь-який ітератор.

julia> s1 = Set(1:4)
Set{Int64} with 4 elements:
  4
  2
  3
  1

Додаваймо нові елементи за допомогою push!() (так само, як із масивами), а видаляймо їх за допомогою delete!().

julia> push!(s1, 5)
Set{Int64} with 5 elements:
  5
  4
  2
  3
  1

# Duplicates are ignored
julia> push!(s1, 3)
Set{Int64} with 5 elements:
  5
  4
  2
  3
  1

julia> delete!(s1, 5)
Set{Int64} with 4 elements:
  4
  2
  3
  1

julia> length(s1)  # length counts entries, despite the non-sequential type
4

Операції над множинами

Як і з кількома іншими типами колекцій, перевіряймо належність за допомогою оператора in або ∈ (щоб отримати символ, введіть \in, а потім натисніть Tab).

julia> 3 ∈ s1
true

Підтримуються такі операції над парами множин (скорочення для символу оператора наведено в дужках).

  • union(A, B) або A ∪ B (\cup): усі елементи, що належать A, B або обом.
  • intersect(A, B) або A ∩ B (\cap): усі елементи, спільні для A і B.
  • setdiff(A, B) (без символу): елементи, що належать A, але не B.
  • symdiff(A, B) (без символу): елементи, що належать або A, або B, але не обом.
  • issubset(A, B) або A ⊆ B (\subseteq) або B ⊇ A (\supseteq): true, якщо всі елементи A також належать B.
  • issetequal(A, B) (без символу): true, якщо A і B містять точно ті самі елементи.
  • isdisjoint(A, B) (без символу): true, якщо A і B не мають спільних елементів (тобто перетин порожній).
s1 = Set(1:4)
s2 = Set(3:6)

julia> s1 ∪ s2  # union
Set{Int64} with 6 elements:
  5
  4
  6
  2
  3
  1

julia> s1 ∩ s2  # intersect
Set{Int64} with 2 elements:
  4
  3
  
julia> setdiff(s1, s2)
Set{Int64} with 2 elements:
  2
  1

julia> symdiff(s1, s2)
Set{Int64} with 4 elements:
  5
  6
  2
  1
  
julia> s1 ⊇ s2  # issubset
false

Існують також версії багатьох із них, які змінюють множину, з !, доданим до назви функції. Повний список функцій наведено в посібнику.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Множини