Table of Contents
Adatszerkezetek I. - Listák, tuple, stringek
Listák alapjai
Lista: több érték egy változóban.
- Az elemeket szögletes zárójelbe kell tenni
- Vesszővel kell elválasztani
- Lista hossza: len(lista)
szamok = [1, 2, 3, 4] nevek = [“Anna”, “Béla”, “Csilla”] vegyes = [10, “szöveg”, True]
#példa szamok = [10, 20, 30] print(len(szamok)) print(szamok)
Feladat: Hozz létre egy listát 5 kedvenc számmal. Írd ki a lista hosszát. Írd ki az egész listát.
kedvencek = [3, 7, 12, 25, 42]
print("Hossz:", len(kedvencek))
print("Lista:", kedvencek)
Lista metódusai
- append(x) – hozzáadás
- extend(iterable) - Egy iterálható objektum összes elemét hozzáadja a lista végéhez.
- insert(index, x) - Egy elemet beszúr a megadott indexre.
- remove(x) - Eltávolítja az első előfordulását az adott értéknek.
- pop([index]) - Eltávolít és visszaad egy elemet. (Ha nincs index az utolsót, ha van, akkor az aditt pozíciót
- clear() - Az összes elemet törli a listából.
- index(x[, start[, end]]) - Visszaadja az első előfordulás indexét.
- count(x) - Megszámolja, hányszor szerepel az elem.
- sort(key=None, reverse=False) - Rendezi a listát (helyben módosít).
- sorted(x) - Rendezi alistát (új listát ad vissza)
- reverse() - Megfordítja a lista elemeinek sorrendjét.
- len(lst) - hossz
- lst[0] - indexelés
- lst[1:3] - szeletelés
- 1 in lst - tagságvizsgálat
# Kiinduló lista
lst = [5, 2, 9, 2, 1]
print("Kezdeti lista:", lst)
# append()
lst.append(7)
print("append(7):", lst)
# extend()
lst.extend([8, 9])
print("extend([8,9]):", lst)
# insert()
lst.insert(1, 100)
print("insert(1,100):", lst)
# remove()
lst.remove(2) # az első 2-t törli
print("remove(2):", lst)
# pop()
utolso = lst.pop()
print("pop():", lst, "| kivett elem:", utolso)
# index()
idx = lst.index(9)
print("index(9):", idx)
# count()
darab = lst.count(2)
print("count(2):", darab)
# sort()
lst.sort()
print("sort():", lst)
# reverse()
lst.reverse()
print("reverse():", lst)
# len()
print("len():", len(lst))
# indexelés
print("lst[0]:", lst[0])
# szeletelés
print("lst[1:4]:", lst[1:4])
# tagságvizsgálat
print("100 in lst:", 100 in lst)
# sorted() (nem módosítja az eredetit)
uj_lista = sorted(lst)
print("sorted(lst):", uj_lista)
print("Eredeti lista:", lst)
# clear()
lst.clear()
print("clear():", lst)
Feladat: Egy osztály dolgozatpontszámait kezeljük egy listában. Új pontszám érkezik, hibás adatot törlünk, javítást rögzítünk, statisztikát készítünk, majd rendezzük az adatokat.
# Kezdeti pontszámok
pontok = [78, 85, 62, 90, 78, 55]
print("Kezdeti lista:", pontok)
# Új tanuló pontszáma érkezik
pontok.append(88)
print("append(88):", pontok)
# Több pótdolgozat eredménye egyszerre
pontok.extend([91, 67])
print("extend([91, 67]):", pontok)
# Hibás adat bekerült (0 pont), ezt töröljük
pontok.append(0)
print("Hibás adat hozzáadva:", pontok)
pontok.remove(0)
print("remove(0):", pontok)
# Egy tanuló visszalép, az utolsó eredményt töröljük
torolt = pontok.pop()
print("pop():", pontok, "| törölt:", torolt)
# Megnézzük, hány 78 pontos dolgozat van
print("count(78):", pontok.count(78))
# Megkeressük a legelső 90 pontos dolgozat indexét
print("index(90):", pontok.index(90))
# Rendezzük növekvő sorrendbe
pontok.sort()
print("sort():", pontok)
# Fordított sorrend (legjobb eredmény elöl)
pontok.reverse()
print("reverse():", pontok)
# Átlag számítása
atlag = sum(pontok) / len(pontok)
print("Átlag:", round(atlag, 2))
# Ellenőrzés: van-e bukás (<60 pont)
bukott = any(p < 60 for p in pontok)
print("Van bukott tanuló?", bukott)
Lista bejárása for ciklussal
- Nem indexet, hanem közvetlenül elemet kapunk
szamok = [10, 20, 30]
for elem in szamok:
print(elem)
Feladat: Hozz létre egy listát 5 számmal. Írd ki az elemek összegét.
szamok = [4, 8, 15, 16, 23]
osszeg = 0
for elem in szamok:
osszeg += elem
print("Összeg:", osszeg)
Indexelés
- Az indexelés 0-tól indul.
- Elem elérése: lista[index]
- Utolsó elem: -1. index
szamok = [10, 20, 30] print(szamok[0]) print(szamok[1]) print(szamok[-1]) #vagy print(szamok[2])
Feladat: Hozz létre egy 4 elemű listát, írd ki az első és az utolsó elemet, írd ki a második elemet megszorozva 2-vel
lista = [5, 10, 15, 20]
print("Első:", lista[0])
print("Utolsó:", lista[-1])
print("Második * 2:", lista[1] * 2)
String mint lista
A string karakterek sorozata.
szo = "Krumpli" print(szo[0])
Bejárás:
for betu in szo:
print(betu)
Feladat: Kérj be egy szót. Írd ki a karakterek számát. Írd ki külön sorba a karaktereket.
szo = input("Adj meg egy szót: ")
print("Karakterek száma:", len(szo))
for betu in szo:
print(betu)
Összefoglaló feladatok
1. feladat: Írj egy programot, ami: Bekér 5 számot, eltárolja listában, kiírja a legnagyobb számot
szamok = []
for i in range(5):
szam = float(input("Adj meg egy számot: "))
szamok.append(szam)
max_ertek = szamok[0]
for elem in szamok:
if elem > max_ertek:
max_ertek = elem
print("Legnagyobb szám:", max_ertek)
2. feladat: Adott egy lista szavakkal. Számold meg minden szóban a magánhangzók számát, és készíts egy új listát, amely az eredeti szó mellé eltárolja a darabszámot!
szavak = ["alma", "korte", "szilva", "barack"]
maganhangzok = "aáeéiíoóöőuúüű"
eredmeny = []
for szo in szavak:
db = 0
for betu in szo: # string bejárása
if betu in maganhangzok:
db += 1
eredmeny.append((szo, db)) # tuple mentése listába
print(eredmeny)
3. feladat: Adott egy lista szavakkal. Készíts új listát, amely minden szót fordítva tartalmaz!
szavak = ["python", "lista", "ciklus"]
forditott = []
for szo in szavak:
uj_szo = ""
for i in range(len(szo)-1, -1, -1): # visszafelé indexelés
uj_szo += szo[i]
forditott.append(uj_szo)
print(forditott)
4. feladat: Adott egy lista szavakkal.
- Töröld az üres stringeket (“”)
- Alakíts minden szót kisbetűssé
- Számold meg, hányszor szerepel a “python” szó
- Rendezd a listát ABC sorrendbe
szavak = ["Python", "", "lista", "PYTHON", "ciklus", "", "python"]
# Üres elemek törlése
while "" in szavak:
szavak.remove("")
# Kisbetűsítés új listába
tisztitott = []
for szo in szavak:
tisztitott.append(szo.lower())
# "python" előfordulások száma
db = tisztitott.count("python")
print("python előfordulás:", db)
# Rendezés
tisztitott.sort()
print("Rendezett lista:", tisztitott)
5. feladat: Adott egy jegylista.
- Adj hozzá 2 új jegyet
- Töröld az első elégtelent (1)
- Írd ki, hány db 5-ös van
- Rendezd csökkenő sorrendbe
jegyek = [3, 5, 2, 1, 4, 5, 1]
# Új jegyek hozzáadása
jegyek.extend([5, 4])
# Első 1-es törlése
if 1 in jegyek:
jegyek.remove(1)
# 5-ösök száma
print("5-ösök száma:", jegyek.count(5))
# Rendezés csökkenőbe
jegyek.sort(reverse=True)
print("Rendezett lista:", jegyek)
6. feladat: Adott egy mondat.
- Bontsd szavakra
- Töröld az 1 karakteres szavakat
- Add hozzá a “vége” szót a listához
- Írd ki a leghosszabb szó indexét
mondat = "A python egy nagyon jo programozasi nyelv"
szavak = mondat.split()
# 1 karakteres szavak törlése
for szo in szavak[:]: # másolat, hogy biztonságos legyen a törlés
if len(szo) == 1:
szavak.remove(szo)
# Új szó hozzáadása
szavak.append("vege")
# Leghosszabb szó meghatározása
leghosszabb = ""
for szo in szavak:
if len(szo) > len(leghosszabb):
leghosszabb = szo
print("Leghosszabb szó:", leghosszabb)
print("Indexe:", szavak.index(leghosszabb))
