Kihagyás

Szerkesztés alatt!

Az oldal további része szerkesztés alatt áll, a tartalma minden további értesítés nélkül többször, gyakran, jelentősen megváltozhat!

Halmaz

Tartalom

A Python set adattípusa. Feladatmegoldások set segítségével.

A halmazok (set) alapjai

A halmaz olyan adattípus, amely egyedi elemeket tartalmaz, sorrend nélkül.
Pythonban a halmazokat a set típus reprezentálja.

Halmaz létrehozása

A halmazokat kapcsos zárójelekkel ({}) hozhatjuk létre:

Egyszerű halmaz
1
2
3
gyumolcsok = {"alma", "körte", "barack"}
print(gyumolcsok)
# Példa kimenet: {'barack', 'körte', 'alma'}

A sorrend eltérhet, mivel a halmaz nem rendezett gyűjtemény.

Üres halmaz létrehozásához a set() függvényt használjuk, mert a {} üresen szótárt (dict) jelentene.

1
ures = set()

Üres halmaz létrehozása

A {} üresen nem halmaz, hanem szótár típus!


Halmazműveletek

A halmazokon ugyanazok a műveletek használhatók, mint a matematikában.

Unió – | vagy union()

Azon elemek halmaza, melyek a két adott halmazban megtalálhatóak. Ez a két halmaz összes elemét jelenti, azokat is, amelyek csak az egyik halmazban szerepelnek, illetve azokat is, amelyek mindkét halmazban, tehát a halmazok metszetében szerepelnek.

Két halmaz uniója
1
2
3
4
A = {1, 2, 3}
B = {3, 4, 5}
print(A | B)        # Vagy A.union(B)
# {1, 2, 3, 4, 5}

Metszet – & vagy intersection()

Azon elemek halmaza, melyek mindkét halmazban megtalálhatóak.

Két halmaz metszete
1
2
3
4
A = {1, 2, 3}
B = {3, 4, 5}
print(A & B)        # Vagy A.intersection(B)
# {3}

Különbség – - vagy difference()

Azon elemek halmaza, melyek szerepelnek egy adott halmazban, de egy másikban nem. A lenti példa szerint az A - B azokat a számokat jelenti, melyek szerepelnek az A halmazban, de nincsenek benne a B halmazban.

Halmazkülönbség
1
2
3
4
A = {1, 2, 3, 4}
B = {3, 4, 5}
print(A - B)        # Vagy A.difference(B)
# {1, 2}

Szimmetrikus különbség – ^ vagy symmetric_difference()

Azon elemek halmaza, melyek szerepelnek valamelyik halmazban, de nem mind a kettőben. Kissé matekosabb megközelítésben nézve, ez a két halmaz uniójának és metszetének a különbsége.

Szimmetrikus különbség
1
2
3
4
A = {1, 2, 3}
B = {3, 4, 5}
print(A ^ B)        # Vagy A.symmetric_difference(B)
# {1, 2, 4, 5}

Elemvizsgálat és módosítás

Elem ellenőrzése: in és not in

Elem keresése
1
2
3
gyumolcsok = {"alma", "körte", "barack"}
print("alma" in gyumolcsok)     # True
print("banán" not in gyumolcsok) # True

Elem hozzáadása, törlése

1
2
3
4
5
A = {1, 2, 3}
A.add(4)        # elem hozzáadása
A.remove(2)     # elem törlése (hiba, ha nincs)
A.discard(5)    # elem törlése (hiba nélkül)
A.clear()       # minden elem törlése

A discard() biztonságosabb

Ha nem vagyunk biztosak abban, hogy egy elem benne van-e, használjunk discard()-ot, mert az nem okoz hibát.


Duplikátumok eltávolítása

Halmazokat gyakran használunk egyedi elemek kiszűrésére listákból.

Ismétlődő elemek eltávolítása
1
2
3
4
nevek = ["Anna", "Béla", "Anna", "Csaba"]
egyedi_nevek = set(nevek)
print(egyedi_nevek)
# {'Anna', 'Béla', 'Csaba'}

Ha újra listát szeretnénk, használjuk a list() függvényt:

1
lista = list(egyedi_nevek)


Példák halmazműveletekre

Diákok halmazai
1
2
3
4
5
6
7
matek = {"Anna", "Béla", "Csaba"}
fizika = {"Béla", "Dóra", "Erika"}

print("Mindkettőn:", matek & fizika)
print("Legalább az egyiken:", matek | fizika)
print("Csak matekon:", matek - fizika)
print("Csak fizikán:", fizika - matek)

Kimenet:

1
2
3
4
Mindkettőn: {'Béla'}
Legalább az egyiken: {'Anna', 'Béla', 'Csaba', 'Dóra', 'Erika'}
Csak matekon: {'Anna', 'Csaba'}
Csak fizikán: {'Dóra', 'Erika'}


Gyakorló feladatok

Halmazok és egyedi elemek

1. feladat – Egyedi karakterek

Kérj be egy szót a felhasználótól, és írd ki, hány különböző betűt tartalmaz!

Példa:

1
2
Add meg a szót: almafa
Különböző betűk száma: 4

Példamegoldás
1
2
3
szo = input("Add meg a szót: ")
egyedi = set(szo)
print("Különböző betűk száma:", len(egyedi))
2. feladat – Közös diákok

Két lista tartalmazza a különböző tárgyak hallgatóit:

1
2
matek = ["Anna", "Béla", "Csaba"]
fizika = ["Béla", "Dóra", "Erika"]
Írd ki, kik járnak mindkettő tárgyra!

Példamegoldás
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 2 lista, ami tartalmazza az embereket, az adott tárgyról
matek = ["Anna", "Béla", "Csaba"]
fizika = ["Béla", "Dóra", "Erika"]

# Halmaz készítése a listákból
matek = set(matek)
fizika = set(fizika)

kozos = matek & fizika
print("Mindkettőn:", kozos)
3. feladat – Csak az egyik tárgyon

A fenti példában írd ki azokat, akik pontosan az egyik tárgyra járnak (szimmetrikus különbség).

Példamegoldás
1
2
3
4
matek = {"Anna", "Béla", "Csaba"}
fizika = {"Béla", "Dóra", "Erika"}
csak_egyiken = matek ^ fizika
print("Csak az egyik tárgyon:", csak_egyiken)
4. feladat – Egyedi betűk két szóban

Kérj be két szót, és írd ki:

  1. Mely betűk vannak mindkettőben
  2. Mely betűk csak az egyikben
Példamegoldás
1
2
3
4
5
6
7
8
elso = input("Add meg az első szót: ")
masodik = input("Add meg a második szót: ")

halmaz1 = set(elso)
halmaz2 = set(masodik)

print("Mindkettőben:", halmaz1 & halmaz2)
print("Csak az egyikben:", halmaz1 ^ halmaz2)
5. feladat – Hiányzó betűk

Kérj be egy mondatot, és írd ki, mely betűk nem szerepelnek benne az angol abc 26 betűje közül.

Tipp: abc = set("abcdefghijklmnopqrstuvwxyz")

Példamegoldás
1
2
3
4
5
abc = set("abcdefghijklmnopqrstuvwxyz")
mondat = input("Adj meg egy mondatot: ").lower()
hasznalt = set(mondat)
hianyzo = abc - hasznalt
print("Hiányzó betűk:", hianyzo)
6. feladat – Közös számok

Adott két halmaz, amelyek számokat tartalmaznak. Írd ki, hány közös elemük van!

Kiindulásnak két halmaz, amelyekben van közös elem:

1
2
A = {1, 2, 3, 4, 5}  
B = {3, 4, 6, 7}

Példamegoldás
1
2
3
4
A = {1, 2, 3, 4, 5}
B = {3, 4, 6, 7}
kozos = A & B
print("Közös elemek száma:", len(kozos))

Összefoglalás

A halmazok segítségével egyszerűen kezelhetünk:

  • egyedi elemeket,
  • közös és különböző elemeket,
  • duplikátumok eltávolítását,
  • gyors elemkeresést.

A halmazműveletek hatékony és elegáns megoldást kínálnak számos problémára.