Fizika, matek, informatika érettségi

Home Fizika Excel Access A weboldalról

Listák, halmazok

Lista

Lista (list): egymás utáni adatok. Vannak 1 és több dimenziós tömbök, az indexek 0-tól indulnak. A Python a stringeket is listaként kezeli. A Pythonban a listára nem vonatkozik az a szigorú megkötés, hogy minden elem azonos típusú lehet, és több dimenzió esetén is lehetnek eltérő számú elemek.

Létrehozás:
lista = [1,’a’,[2,3]], de lehet for ciklussal is létrehozni:
paros_szamok = [i for i in range(1, 101) if i % 2 == 0]
lista = [’+’ if a>=0 else ’-’ for a in szamok]

Üres lista létrehozása: lista = []

Lista másolása: ujlista = copy(lista)

Elem hozzáadása:
lista.append(elem) egy elemet hozzáfűz a lista végéhez.
lista.extend(elem) kibővíti a listát.

Elem törlése: lista.remove(elem)

Lista métere (elemek száma): len(lista)


Elemek elérése:listaelemekre hivatkozhatunk ilyen formákban:
lista[i] lista i-1-edik eleme, kezdőérték 0. Negatív i esetén visszafelé számol, vagyis lista[-1] az utolsó elemet jelenti.
lista[i:j] a lista része, szelete i. indextől j-1. indexig, de a j-edik elemet már nem tartalmazza; i alapbeállítás szerinti értéke 0, j alapbeállítás szerinti értéke len(lista
lista[i:j:k] a lista i-től j-ig vett szelete, k lépésközzel.

Például a lista = [‘a’, ‘b’, ‘papa’, ‘z’, ‘mama’] esetén a következők az értékek:
lista[1:3]eredménye [‘b’, ‘papa’]
lista[1:-1] eredménye [‘b’, ‘papa’, ‘z’]
lista[0:3] eredménye [‘a’, ‘b’, ‘papa’]
lista[:3] eredménye [‘a’, ‘b’, ‘papa’]
lista[3:] eredménye [‘z’, ‘mama’], a harmadik indexűtől a végéig.
lista[:] eredménye [‘a’, ‘b’, papa’, ‘z’, ‘mama’]


Stringlista összekapcsolt kiíratása:
’elválasztó’.join(lista)
Példa: print(', '.join([str(n) for n in számlista])) egy számokból álló listából stringeket tartalmazó listát készít, és ezeknek az elemeit írja ki vessző és szóközzel elválasztva (a végére nem ír elválasztót).

Másik lehetőség a * használata: print(*lista) szóközzel elválasztva írja ki egymás alá a lista elemeit.
Példák: print(*lista,sep=',') vesszővel és szóközzel elválasztva írja ki a lista elemeit, print(*lista,sep='\n') egymás alá, új sorokba.

Ha egy számokból álló listát akarunk egymás után kiíratni (vesszővel és szóközzel elválasztva), lakalmazhatjuk a map() függvényt is, ami a lista elemeire egyenként alkalmaz egy adott függvényt:
print(", ".join(map(str,szamsor)))


Fontosabb listakezelő függvények:
lista.count(elem) megszámolja, hányszor fordul elő az adott elem a listában.
lista.index(érték) az első, értékkel egyenlő elem indexe.
lista.sort(reverse=True|False, key=függvény) rendezi a listát.
lista.clear() minden elemet kitöröl a listából.
lista.remove(elem)
lista.insert(index,elem) index pozícióra beszúrja elemet
lista.pop(index) az index pozícióról kitöröl egy elemet.
lista.reverse() megfordítja a listát.
min(lista) a lista legkisebb eleme.
max(lista) a lista legnagyobb eleme.
sum(lista) összeadja a számlista elemeit.


Lista rendezése: sort(key=függvény, reverse=True)
Példák: számlista növekvőbe rendezése: lista.sort()
számlista csökkenőbe rendezése: lista.sort(reverse=True)
szöveglista hossz szerinti rendezése: lista.sort(key = len)


Végiglépkedés: vagy elemek szerint, vagy index szerint:
for elem in lista:
print(elem)
for i1 in range(len(lista)):
print(lista[i1])


Tartalmazás vizsgálat: Az in operátorral lehet eldönteni, hogy egy elem benne van-e egy listában, pl.
if betu in [’e’,’i’,’o’,’ö’,’ü’,’ó’,’ő’,’ú’,’é’,’á’,’í’]:
print(’a betű egy magánhangzó’)
else:
print(’a betű egy mássalhangzó’)


Több dimenziós listák, tömbök: listák listája.
Példa több dimenziós tömbre: szamok = [[1,3],[5,7],[9,11]]. Itt pl. szamok[2][0] értéke 9.
Például lista = [[’egy’,1],[’hét’,7,’törpe’]] Itt lista[1][1] értéke 7, lista[0][1] értéke 1.


Elemek elérése: több dimenziós listán végig lehet így menni:
for i in range(len(a)):
for j in range(len(a[i])):
print(a[i][j], end=’ ‘)
print()


Több dimenziós lista rendezése: több lehetőség van.
sort(key=lambda elem: elem[1]) pl. a 2. elemek szerint rendezi növekvőbe.
sort(key=lambda elem: elem[0], reverse=True) az első elemek szerinti csökkenőbe rendezi.
sort(key=lambda e:(e[0],e[1]) a listát úgy rendezi, hogy az 1., azon belül a 2. elemek szerint növekvőbe.
sort(key=lambda e:(e[0],-e[1]) a listát úgy rendezi, hogy az 1. elemek szerint növekvőbe, azon belül a 2. elemek szerint csökkenőbe.

Definiálhatunk egy rendező függvényt, pl. a következő minta rendezi a listát úgy, hogy az 1., majd a 2. szerint lesznek sorba rendezve.
def rendez(i):
return i[0],i[1] lista.sort(key=rendez)

Csökkenőbe így lehet rendezni: lista.sort(key=rendez,reverse=True)


Halmaz

Halmaz (set): egy elem csak egyszer fordulhat elő benne, nem rendezett (nem lehet megmondani, melyik az első vagy utolsó elem és nem lehet indexszel hivatkozni egy-egy elemre), és az elemek nem változtathatók meg. Lehet viszont hozzárakni elemet, kiszedni belőle, tartalmazást vizsgálni, végiglépkedni az elemeken és a metszet és unió is megvalósítható a megfelelő függvényekkel.

Amiért nagyon hasznos: ha egy listából halmazt csinálunk, akkor a lista minden elem csak egyszer szerepel benne, vagyis eltávolítja a duplikációkat.

Pl. ha a lista = [1, 1, 2, 2, 3, 4, 5, 5, 5, 6, 9], akkor a halmaz=set(lista) eredménye {1, 2, 3, 4, 5, 6, 9}. Ilyenkor a 2 in halmaz eredménye True lesz.

Új elem hozzáadása: lista.add(új elem)

Egy elem törlése: lista.remove(törlendő_elem)

Elemek elérése:
for elem in halmaz:
print(elem)


Tartalmazás vizsgálat:
if 1 in (1, 2, 3):
print(’Benne van!’)