Modulelessen (4/4)
Stelt in
Een set is een verzameling unieke, ongeordende elementen. Drie superkrachten:
- Automatische ontdubbeling: tweemaal hetzelfde element toevoegen heeft geen effect.
- O(1) lidmaatschapstest:
x in sis extreem snel, zelfs met miljoenen van elementen (het is op hash gebaseerd, zoals dictaten). - Setbewerkingen: vereniging, snijpunt, verschil, symmetrisch verschil.
Een set maken
vuoto = set() # ATTENZIONE: {} è un dict vuoto, non un set!
numeri = {1, 2, 3}
da_lista = set([1, 1, 2, 3, 3, 3]) # {1, 2, 3}Alleen accolades {} maak een leeg woordenboek, geen set: voor een lege set
je hebt set() nodig.
Een set wijzigen
s = {1, 2, 3}
s.add(4) # {1, 2, 3, 4}
s.add(1) # nessun effetto (già presente)
s.discard(99) # rimuove se presente, silenzioso altrimenti
s.remove(2) # rimuove o solleva KeyErrorBewerkingen instellen
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
a | b # {1, 2, 3, 4, 5, 6} unione
a & b # {3, 4} intersezione
a - b # {1, 2} differenza (in a ma non in b)
a ^ b # {1, 2, 5, 6} differenza simmetrica (xor)Er zijn ook methodeformulieren (a.union(b), a.intersection(b), …) die in
Bovendien accepteer je elke iterabele, niet alleen sets.
Lidmaatschapstest
parole = {"ciao", "mondo", "python"}
"ciao" in parole # True O(1)
"java" not in parole # TrueTer vergelijking: zoeken met in binnen een list is O(n) en lang
vermeldt dat het veel langzamer is.
Frozen set: de onveranderlijke versie
frozenset({1, 2, 3}) is de hashbare versie: het kan een dicteersleutel zijn of een
element van een andere set.
Bewerkingen en prestaties instellen
Sets worden geïmplementeerd als hashtabellen, wat het testen van lidmaatschappen (x in my_set) extreem snel maakt: het draait in een constante tijd O(1), in tegenstelling tot lijsten waarbij het zoeken lineaire tijd kost O(n). Bovendien ondersteunen ze algebraïsche bewerkingen zoals unie (|), snijpunt (&) en verschil (-).
Probeer het
Gegeven de lijst `nums = [1, 2, 2, 3, 3, 3, 4]`, bouw `unique_items` met de unieke waarden (in willekeurige volgorde) en bereken vervolgens `count` als len(unique_items). Evalueer 'telling'.
Toon hint
set(nums) verwijdert duplicaten.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Gegeven 'a = {1, 2, 3, 4}' en 'b = {3, 4, 5, 6}', bereken je het snijpunt in 'gemeenschappelijke_items' en het verschil a-b in 'slechts_a'. Evalueer de tupel `(common_items, only_a)`.
Toon hint
& snijpunt, - verschil.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Given two sets `set_a = {1, 2, 3}` and `set_b = {2, 3, 4}`, calculate the mathematical intersection of the two sets (their common elements). Store the resulting set in `common_elements` and evaluate it.
Toon hint
U kunt de operator & of de methode set_a.intersection(set_b) gebruiken.
Oplossing beschikbaar na 3 pogingen