Python sets

Op deze pagina:

Sets zijn ongeordende verzamelingen zonder duplicaten. Sets kunnen niet worden gesorteerd met sort(). Je kunt ook geen indexen gebruiken in sets. Sets kunnen sneller doorzocht worden op het bestaan van een bepaald element dan lists.

Je kunt een set maken door de elementen op te geven tussen gekrulde haken:


mijnset = {4,6,8,2}

Je kunt ook een set maken van een reeds bestaande structuur via set:


mijnlist = [0,1,5,4,7,6,6]
mijnset = set(mijnlist)

{0, 1, 4, 5, 6, 7}

De elementen van een set moeten uniek zijn, vandaar dat in het bovenstaande voorbeeld de dubbele zes werd verwijderd bij het maken van de set.

Element toevoegen aan een set

Een element dat nog niet voorkomt in de set kun je toevoegen via add():


mijnset.add(9)

Het resultaat:


{0, 1, 4, 5, 6, 7, 9}

Element verwijderen uit een set

Een element verwijderen uit een set kan met remove().


mijnset.remove(5)

Het resultaat:


{0, 1, 4, 6, 7, 9}

Het verschil tussen 2 sets bepalen

Het verschil tussen 2 sets kan bepaald worden met difference().


set1 = {1,3,6,7}
set2 = {1,3,6,8,10}
print(set1.difference(set2))

Het resultaat is een nieuwe set met de elementen die wel in set1 voorkomen, maar niet in set2:


{7}

Andersom kan het ook:


set1 = {1,3,6,7}
set2 = {1,3,6,8,10}
print(set2.difference(set1))

Het reslutaat is een nieuwe set met de elementen die wel in set2 voorkomen, maar niet in set1:


{8, 10}

Gemeenschappelijke elementen in 2 sets

Welke elementen 2 sets gemeenschappelijk hebben kan worden bepaald met intersection():


print(set1.intersection(set2))

Het resultaat:


{1, 3, 6}

Sets samenvoegen

Sets samenvoegen kan met union().


set3 = set1.union(set2)
print(set3)

Het resultaat is een nieuwe set met alle elementen uit de 2 sets, zonder duplicaten:


{1, 3, 6, 7, 8, 10}

Nagaan of een element voorkomt in een set


set1 = {1,3,6,7}

print(3 in set1)

# resultaat:
True

Het aantal elementen van een set opvragen


set1 = {1,3,6,7}

print(len(set1))

# resultaat
4

Een willekeurig element van een set ophalen

Sets zijn ongeordende datastructuren. Je kunt geen elementen uit een set ophalen op basis van een index, die index is er niet.

Een manier om een willekeurig element van een set op te vragen is door de set eerst om te zetten naar een list sn dan de pop() functie te gebruiken:


mijnset = {1, 2, 3, 4, 5}
x = list(mijnset).pop()
print(x)

Deze methode maakt een nieuwwe lijst, wat kostbaar kan zijn als de set erg groot is. Een alternatief is om een iterator object te maken en het eerste element op te vragen met de next() functie:


mijnset = {1, 2, 3, 4, 5}
x = next(iter(mijnset))
print(x)

Alle elementen van een set opvragen

Het opvragen van alle elementen van een set kan met een 'for loop':


mijnset = {1, 2, 3, 4, 5}
for x in mijnset:
    print(x)

Een andere methode is om een iterator object te maken en alle elementen op te vragen met de next() functie. De next() functie geeft een StopIteration fout als er geen elementen meer zijn:


mijnset = {1, 2, 3, 4, 5}
it = iter(mijnset)
while True:
    try:
        x = next(it)
    except StopIteration:
        break
    else:
        print(x, end=' ')

# resultaat:
1 2 3 4 5

Je kunt ook een default waarde meegeven aan de next() functie. Als er geen elementen meer zijn, dan geeft de next() functie geen StopIteration fout, maar deze default waarde.

pythonmijnset = {1, 2, 3, 4, 5}it = iter(mijnset)while True: x = next(it, None) if not x: break print(x, end=' ')

resultaat:

1 2 3 4 5


 

Verwante artikelen