Me

Mengen in Julia

1 Übung

Über Mengen

Ein Set ist eine Sammlung von Elementen mit den folgenden Eigenschaften:

  • Ungeordnet.
  • Einträge sind eindeutig, daher werden Versuche, Duplikate hinzuzufügen, stillschweigend ignoriert.
  • Unterstützt viele der Operationen, die man von mathematischen Mengen kennt.

Du erstellst sie mit dem Konstruktor Set() und übergibst einen beliebigen Iterator als Parameter.

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

Neue Elemente fügst du mit push!() hinzu (genauso wie bei Arrays) und entfernst sie mit 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

Set-Operationen

Wie bei einigen anderen Sammlungstypen überprüfst du die Zugehörigkeit mit dem Operator in oder ∈ (gib \in ein und drücke dann Tab für das Symbol).

julia> 3 ∈ s1
true

Die folgenden Operationen auf Paaren von Sets werden unterstützt (die Tastenkürzel für das Operatorsymbol stehen in Klammern).

  • union(A, B) oder A ∪ B (\cup): alle Einträge, die in A oder B oder in beiden enthalten sind.
  • intersect(A, B) oder A ∩ B (\cap): alle Einträge, die sowohl in A als auch in B vorkommen.
  • setdiff(A, B) (kein Symbol): Einträge, die in A, aber nicht in B enthalten sind.
  • symdiff(A, B) (kein Symbol): Einträge, die in A oder B, aber nicht in beiden enthalten sind.
  • issubset(A, B) oder A ⊆ B (\subseteq) oder B ⊇ A (\supseteq): true, wenn alle Einträge von A auch in B enthalten sind.
  • issetequal(A, B) (kein Symbol): true, wenn A und B genau dieselben Einträge enthalten.
  • isdisjoint(A, B) (kein Symbol): true, wenn A und B keine gemeinsamen Einträge haben (die Schnittmenge also leer ist).
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

Von vielen dieser Funktionen gibt es auch mutierende Varianten, bei denen dem Funktionsnamen ein ! angehängt wird. Eine vollständige Liste der Funktionen findest du im Handbuch.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Mengen