Logga in för att kunna spara vad du har gjort.
<< Föregående
Hem
VARNING! Fönstret är för smalt för att använda pythonlabbet.se fullt ut. Använd en enhet med tangentbord!

Mängder eller "sets"

I det här avsnittet kommer du att lära dig att

Vad är en mängd?

Mängder är ett vanligt begrepp i matematiken. En mängd är en samling av element. Dubletter är inte tillåtna. Om vi försöker lägga till ett element som redan finns i mängden händer ingenting, mängden förblir densamma.

I Python kallas en mängd för set, vilket också är det engelska ordet för mängd. De vanligaste funktionerna för mängder är att lägga till element, ta bort element och se om ett element finns i mängden.

Om bara de vanligaste funktionerna används är likheterna mellan mängder och lexikon stora. För mängder i Python finns dock specialiserade funktioner som är användbara just för mängder. På två mängder kan vi till exempel använda unionen (lägga ihop) och snittet (se vilka värden som finns i båda mängder). För läsbarhetens skull rekommenderas att använda en mängd ifall det räcker.

Vanliga funktioner

Precis som för lexikon finns det två vanliga sätt att skapa en mängd på. Se exempel nedan.

Exempel

Skapa en mängd med klamrar.

mängd = {1, 2, 3}

Exempel

Skapa en tom mängd och lägg sedan till element ett och ett.

mängd = set()
mängd.add(1)
mängd.add(2)
mängd.add(3)
mängd.add(3) #händer inget, 3 finns redan.
  

För att ta bort ett element ur en mängd finns bland annat mängd.pop() och mängd.remove(element). Funktionen pop returnerar elementet som tas bort och kan användas om det inte spelar något roll vilket element som plockas ut ur listan.

Använd remove för att ta bort ett specifikt element. Observera att remove ger Keyerror om elementet som du försöker ta bort inte finns. Om du inte vill det så finns mängd.discard(element) som fungerar även om elementet inte finns i mängden.

Exempel

Ta bort ett element med pop() och remove(element).

husdjur = {'Katt', 'Hund', 'Get', 'Zebra'}
husdjur.remove('Zebra')
borttaget = husdjur.pop()
  

För att se om ett element finns i mängden används in precis som för nycklar hos ett lexikon.

Exempel

Se om ett element finns i mängden med in.

husdjur = {'Katt', 'Hund', 'Get', 'Zebra'}
if 'Hund' in husdjur:
    print('Hund finns i mängden husdjur.')
  

Logga in eller skapa konto för att spara dina framsteg och din kod.

Vad gör koden?

Läs koden nedan och försök lista ut vad programmet skriver ut. Kör programmet efter du svarat och se om du fick rätt.

-- Programmets utskrifter --

Fråga: Vad kommer programmet ovan att skriva ut?

-61
61
63
123

Dubbletter och set()

Det finns ett enkelt knep för att räkna antalet unika element i en lista eller en tupel. Om listan eller tupeln omvandlas till en mängd försvinner automatiskt alla dubletter. Tänk bara på att ordningen på elementen inte bevaras.

Exempel

Vi använder set() på lista för att ta bort alla dubbletter.

lista = [3, 7, 2, 3, 6, 8, 3]
mängd = set(lista)
antal_unika_elemement = len(mängd) # 5 st
antal_dubbletter = len(lista) - len(mängd) # 2 st
  

Iterera över en mängd

Om vi vill iterera igenom hela mängden element för element och samtidigt hålla mängden intakt kan vi enkelt göra det med for.

Exempel

Iterera över en mängd. Mängden ser likadan ut efteråt.

racketlon = {'bordtennis', 'badminton', 'squash', 'tennis'}
for sport in racketlon:
    print(sport)
  

Om vi istället vill ta ut ett element i taget tills mängden är tom kan vi använda while mängd: och mängd.pop() som exemplet nedan visar. While-satsen while mängd: fortsätter tills mängden är tom. Det är alltså viktigt att mängden med säkerhet till slut blir tom, annars blir det en oändlig loop.

Exempel

Ta ut ett element i taget från en mängd tills mängden är tom.

mängd = {'Carina', 'Per-Göran', 'Elisabeth', 'Ola'}
while mängd:
    namn = mängd.pop()
    print('Utplockat namn', namn)
  

Logga in eller skapa konto för att spara dina framsteg och din kod.

Ändra i koden

Programmet nedan tar emot ett antal strängar från användaren och lägger i en lista. Använd vad du lärt dig om mängder för att räkna ut hur många unika element som användaren har skrivit in. Spara antalet i variabeln unika_element.

-- Programmets utskrifter --
Status
Du har inte gjort klart någon uppgift än (0 st).