set = halmaz
Olyan adatszerkezet, mely az elemek rendezetlen gyűjteménye és benne minden elem csak egyszer fordulhat elő.
Legtöbbször arra használjuk, hogy ellenőrizzük, egy adott elem szerepel-e az adathalmazban, illetve az elemek kettőzésének (duplikálásának) kiszűrésére is szoktuk alkalmazni.
Jele: {}
Halmaz létrehozása
halmaz1 = {1, 2, 3, 4, 5}
halmaz2 = {1, 2.3, „Szia!”, True}
print(type(halmaz2))
halmaz3 = set()
Alapvető halmazműveletek
A Python halmazaival ugyanazokat a műveleteket végezhetjük el, mint matek órán. 🙂
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7}
- unió: print(A | B) vagy print(A.union(B))
- metszet: print(A & B) vagy print(A.intersection(B))
- különbség: print(A − B) vagy print(A.difference(B))
- szimmetrikus különbség: print(A ^ B) vagy print(A.symmetric_difference(B))
Tartalmazás vizsgálata
print(1 in A) ↦ True
print(1 in B) ↦ False
Halmazok metódusai
halmaz.add(6)
halmaz.add(1)
halmaz.update([10,11,12]) (Listát is tehetünk a halmazba.)
halmaz.remove(2) (Ez hibát ad, ha nincs benne a törlendő elem.)
halmaz.discarde(2) (Ez nem ad hibát.)
halmaz.clear() (Az összes elemet törli a halmazból.)
halmaz1.issubset(halmaz2) (Megvizsgálja, hogy a halmaz1 részhalmaza-e a halmaz2-nek.)
halmaz1.issuperset(halmaz2) (Az előző megfordítása, azaz azt vizsgálja meg, hogy a halmaz1 szülő halmaza-e a halmaz2-nek. Tehát, hogy a halmaz2 részhalmaza-e a halmaz1-nek?)
Halmaz bejárása
for i in halmaz2:
print(i)
Ez egy véletlenszerű bejárás lesz, hiszen nem kötött a sorrend.
Egy példa program
halmaz1 = {"alma", "körte", "szilva", "cseresznye", "meggy", "dió"} # Ha többször futtatjuk a programot, más-más sorrendben írja ki a gyümölcsöket for gyumi in halmaz1: print(gyumi, end="; ") print() print("meggy" in halmaz1) halmaz1.add("barack") print(halmaz1) print() halmaz1.update(["narancs", "banán", "mandarin"]) print(halmaz1) print("A halmaz ", len(halmaz1), " elemet tartalmaz.") print() # Ha az eltávolítandó elem nem létezik, akkor a remove() hibát okoz. halmaz1.remove("cseresznye") # Ha az eltávolítandó elem nem létezik, akkor a discard() NEM okoz hibát. halmaz1.discard("mandarin") print(halmaz1) print() # Az utolsó elem eltávolítása # Mivel a halmaz rendezetlen, ezért nem tudni, hogy a pop() melyik elemet fogja törölni halmaz1.pop() print(halmaz1) print() # halmaz1.clear(): Az összes elemet eltávolítja a halmazból, de maga a halmaz megmarad. # del(halmaz): Magát a halmazt törli. # Listából is lehet halmazt készíteni lista = ["málna", "dinnye", "eper", "eper", "eper", "alma"] halmaz2 = set(lista) gyumolcsok = set() # Üres halmaz létrehozása # Két halmaz metszete: & metszet = halmaz1 & halmaz2 print("Metszet: ", metszet) print() # Két halmaz uniója: | (pipe=cső) unio = halmaz1 | halmaz2 print("Unió: ", unio) print() kulonbseg = halmaz1 - halmaz2 print("Különbség: ", kulonbseg) print() szimmetrikus_kulonbseg = halmaz1 ^ halmaz2 print("Szimmetrikus különbség: ", szimmetrikus_kulonbseg)