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.discard(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)