Sets

(Fortgeschrittene)

Fortgeschrittene Techniken

Sets Anlegen

s1 = {'a', 'b', 'c', 'd', 'e'}
s1
{'a', 'b', 'c', 'd', 'e'}
s1 = set(range(0,10))
s1
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
s1 = {i for i in range(0,10)}
s1
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
s1 = {'a', 'b', 'c'}
s2 = {'a', 'b', 'c'}
s1 == s2
True
s1 is s1
True
s1 is s2
False
s1 = {'a', 'b', 'c'}
s2 = {'c', 'b', 'a'}
s1 == s2
True
s1 is s1
True
s1 is s2
False

Sets Elemente

s1 = {'a', 'b', 'c', 'd'}
a, b, c, d = s1
a
'c'
_, _, _, d = s1
d
'd'

Tuples (in und not in)

s1 = {'a', 'b', 'c', 'd'}
'a' in s1
True
'x' in s1
False
'a' not in s1
False
'x' not in s1
True

Sets mit willkürlichen Objekten¶

s1 = {'int', 1, 'float', 2.0, 'complex', 1+2j, 'boolean', True}
s1
{(1+2j), 1, 2.0, 'boolean', 'complex', 'float', 'int'}

Set von Sets

s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {3, 4, 5}
# s_all = {s1, s2, s3} # this does not work

Verschachtelte Sets

# s = {'a', {'aa','bb'}, 'b'} # this does not work

Sets Methoden

set_methods = [name for name in dir(set) if name.islower() and name[0] !='_']
print(len(set_methods))
print(set_methods)
17
['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

len()

Bemerkung

len(set)
s1 = {1, 3, 2}
s1
{1, 2, 3}
len(s1)
3

min()

Bemerkung

min(set)
min(s1)
1

max()

Bemerkung

max(set)
max(s1)
3

set()

Bemerkung

set(seq)
aTuple = ('Mechanik','Elektonik','Informatik')
set1 = set(aTuple)
set1
{'Elektonik', 'Informatik', 'Mechanik'}
aList = ('Mechanik','Elektonik','Informatik')
set1 = set(aList)
set1
{'Elektonik', 'Informatik', 'Mechanik'}

union()

Bemerkung

s1.union(s2[, s3 ...])
s1 | s2 [| s3 ...]

Erzeugt die Vereinigung von zwei oder mehr Mengen.

s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1.union(s2)
{'a', 'b', 'c', 'd', 'e'}
s1 | s2
{'a', 'b', 'c', 'd', 'e'}
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5}
s1.union(s2)
{1, 2, 3, 4, 5}
s1 | s2
{1, 2, 3, 4, 5}

intersection()

Bemerkung

s1.intersection(s2[, s3 ...])
s1 & s2 [& s3 ...
s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1.intersection(s2)
{'c'}
s1 & s2
{'c'}
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5}
s1.intersection(s2)
{2, 3, 4}
s1 & s2
{2, 3, 4}

difference()

Bemerkung

s1.difference(s2[, s3 ...])
s1 - s2 [- s3 ...]

Erzeugt die Differenz zwischen zwei oder mehreren Mengen.

s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1.difference(s2)
{'a', 'b'}
s1 - s2
{'a', 'b'}
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5}
s1.difference(s2)
{1}
s1 - s2
{1}

symmetric_difference()

Bemerkung

s1.symmetric_difference(s2)
s1 ^ s2 [^ s3 ...]

Erzeugt die symmetrische Differenz zwischen den Mengen.

s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1.symmetric_difference(s2)
{'a', 'b', 'd', 'e'}
s1 ^ s2
{'a', 'b', 'd', 'e'}
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5}
s1.symmetric_difference(s2)
{1, 5}
s1 ^ s2
{1, 5}

isdisjoint()

Bemerkung

s1.isdisjoint(s2)

Bestimmt, ob zwei Mengen gemeinsame Elemente haben oder nicht.

s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1.isdisjoint(s2)
False
s2 - {'c'}
{'d', 'e'}
s1.isdisjoint(s2 - {'c'})
True
s1 = {1, 2, 3}
s2 = {4, 5}
s1.isdisjoint(s2)
True
s1 & s2
set()

issubset()

Bemerkung

s1.issubset(s2)
s1 <= s2

Prüft ob eine Menge eine Teilmenge der anderen ist.

s1 = {'a', 'b', 'c'}
s2 = {'a', 'b', 'c', 'd', 'e'}
s1.issubset(s2)
True
s1 <= s2
True
s = {1, 2, 3, 4, 5}
s.issubset(s)
True
s <= s
True

issuperset()

Bemerkung

s1.issuperset(s2)
s1 >= s2

Prüft ob eine Menge eine Übermenge der anderen ist.

s1 = {'a', 'b', 'c'}
s1.issuperset({'a', 'b'})
True
s2 = {'c', 'd', 'e'}
s1 >= s2
False
s = {1, 2, 3, 4, 5}
s.issubset(s)
True
s >= s
True

update()

Bemerkung

s1.update(s2[, s3 ...])
s1 |= s2 [| s3 ...]

Ändern Sie eine Menge durch Vereinigung.

s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1 |= s2
s1
{'a', 'b', 'c', 'd', 'e'}
s1.update(['f', 'g'])
s1
{'a', 'b', 'c', 'd', 'e', 'f', 'g'}

intersection_update()

Bemerkung

s1.intersection_update(s2[, s3 ...])
s1 &= s2 [& s3 ...]

Ändert eine Menge durch Schneiden.

s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1 &= s2
s1
{'c'}
s1.intersection_update(['f', 'g'])
s1
set()

difference_update()

Bemerkung

s1.difference_update(s2[, s3 ...])
s1 -= s2 [| s3 ...]
s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1 -= s2
s1
{'a', 'b'}
s1.difference_update(['a', 'b', 'e'])
s1
set()

symmetric_difference_update()

Bemerkung

s1.symmetric_difference_update(s2)
s1 ^= s2
s1 = {'a', 'b', 'c'}
s2 = {'c', 'd', 'e'}
s1 ^= s2
s1
{'a', 'b', 'd', 'e'}
s1.symmetric_difference_update(['f', 'g'])
s1
{'a', 'b', 'd', 'e', 'f', 'g'}

add()

Bemerkung

x.add(<elem>)

Fügt ein Element zu einer Menge hinzu.

s = {'a', 'b', 'c'}
s.add('d')
s
{'a', 'b', 'c', 'd'}

remove()

Bemerkung

s.remove(<elem>)

Entfernt ein Element aus einer Menge.

s = {'a', 'b', 'c'}
s.remove('c')
s
{'a', 'b'}

discard()

Bemerkung

x.discard(<elem>)

Entfernt ein Element aus einer Menge.

s = {'a', 'b', 'c'}
s.discard('c')
s
{'a', 'b'}
s.discard('d')
s
{'a', 'b'}

pop()

Bemerkung

x.pop()

Entfernt ein zufälliges Element aus einer Menge.

s = {'a', 'b', 'c'}
s.pop()
'c'
s
{'a', 'b'}

clear()

Bemerkung

s.clear()

Löscht einen Satz.

s = {'a', 'b', 'c'}
s
{'a', 'b', 'c'}
s.clear()
s
set()