Python: lista

10. osztály 10.évf Python Programozás Python

A listák összetett adattípusok. Segítségükkel adatokat tudunk rendezett formában tárolni. Másképp fogalmaza, egy változóban több elemet tárolnak. A listák dinamikusak, méretük és tartalmuk módosítható. Általánosan hogyan néz ki egy lista?
Van egy neve, amelyben felsorolhatjuk az elemeit. pl: napok[„hétfő”, „kedd”]
A lista elemei sorszámozottak(indexelt), a számozásuk 0-val kezdődik, és elemszám-1-ig tart. A lista tartalmazhat ismétlődő elemeket is. A lista elemei lehetnek eltérő típusúak is. A lista elemeit vesszővel választjuk el egymástól. A lista elemeire az indexükkel lehet hivatkozni. A lista első eleme a 0. indexű elem: listam[0] az utolsó ötödik elemének index 4, de ezt így nem használjuk! Könnyebb, ha hátulról nézzük, ebben az estben -1 az utolsó elem indexe, mindig!

Egy lista elem értékét felül tudjuk írni. pl. az első elemnek adjunk új értéket: listam[0] = „vasárnap”. De adhatunk új értéket egyszerre több elemnek is… listam[1:3] = „új érték1″,”új érték 2”. Próbáld ki!

A listánál is használhatunk range-et, tehát meg tudjuk adni mettől meddig akarjuk kiíratni a lista elemeit. Írjuk ki a hétköznapokat. (0. elemtől kezd, a 4-es az utolsó amit kiír) Itt is el lehet hagyni a kezdő illetve a záró indexet. Röviden: print(napok[:5]) ez alapból 0 index-szal kezd, az ötösig megy, de az ötös nincs benne ugybár. Ha csak a hétvégi napokat akarom kiíratni: print(napok[5:]) tehát az ötös indextől a végéig megy

len: lista elemszámát adja meg. pl: print(len(napok)) Ezt is felhasználhatjuk a lista utolsó elemének kiíratásához: print(lista[len(lista)-1]) tehát lista elemszáma-1 az utolsó elem indexe. Azt meg néztük, hogy az x. elem az lista[x] ebből lett ez: lista[len(lista)-1] Értjük.

listaelem(ek) mentése változóba: azt megnéztük hogyan tudjuk kiíratni őket, ugyanezen az elven el is lehet menteni őket változókba. Ehhez természetesen használhatunk ciklusokat is, majd nézzünk később rá példát.

lista elemeinek kiíratása for ciklussal, más néven lista bejárása. Első körben egyszerűen, utána hasonlóan, mint a c#-ban, a lista hosszáig megyünk, és indexet növeljük egyesével:

in kulcsszó: segítségével meg tudjuk határozni, hogy egy keresett elem benne van-e a listában, illetve segít a listák elemein végigmenni. not in: az in tagadása

lista elemeinek kiíratása while ciklussal, mert miért ne. Na meddig megyünk? Amíg i < mint a napok lista hossza, itt is egyesével számolunk le vele.

append: Új elem beszúrása a lista végére.

insert: Új elem beszúrása x.indexű helyre. Tegyük fel beírtam hibásan a hétköznapokat, és kihagytam a szerdát ezt szeretném javítani. Akkor a 2. indexű elem helyére kéne beszúrni. lista.insert(2, „szerda”) Egyszerű.

Listák elemeinek összevonása:

extend: hozzáadhatjuk egy lista elemeit egy másikhoz. Tehát kibővítem a hétköznapokat a hétvégéve mondjuk. Ugyanezt meg lehet csinálni összeadással is: lista3=lista2+lista1 Használhatjuk az append-et is!

Lista elemeinek törlése. Elemet törölhetünk érték és index szerint is.

remove() Elem törlése a listából érték szerint. Töröljük pl, a keddet! Ha többször szerepel a kedd, akkor is csak az elsőt törli!

pop() vagy del() Elem törlése index szerint. Töröljük megint a keddet, de most az indexe alapján. Mennyi? 1 Ha nem adunk meg neki indexet, akkor az utolsó elemet törli.

Meguntad a napok listát, tele van vele a …? Nyírjuk ki, ott egye meg a fene 🙂 ! A del erre is jó! del napok Ennyi, vó’t nincs!

clear() A clear utasítás a lista elemeit törli, magát a listát nem!

listából elemek másik listába feltétel alapján: Tegyük fel, hogy szerenénk kigyűjteni a napjaink közül az „a” betűt tartalmazókat!

Lista elemeinek sorbarendezése

Rendezés: lista elemeinek rendezése abc sorrendbe. sort() Alapesetben növekvő sorrendbe rendez. Számokat is!

Rendezés csökkenő sorrendbe: lista.sort(reverse = True)

A sort függvény a kis és nagybetűket megkülönbözteti! Ha szeretnénk ezt elkerülni, használjuk a következő paraméterekkel: sort(key = str.lower)

reverse: lista elemeinek kiíratása fordított sorrendben. Ez nem rendez, ez csak a sorrendet változtatja meg!

copy avagy lista másolása. Leírása: masolat= lista.copy()
Például szeretném elmenteni a listám eredeti állapotát, mert rendezni fogom., de szükségem van az eredetire is:

Keresés listában
Hányszor szerpel egy elem a listában? Érték szerint keres a count() függvény. Pontos egyezés szükséges, tehát a birsalma nem számít!

Nézzük meg egy adott elem indexét! Szintén elég gyakori feladat. Az első megtalált elem indexét adja vissza!

Listák egymásba ágyazása

Egy lista tartalmazhat listákat is elemként! Nézzünk egy példát: megmérjük naponta 3x az informatika tanterem hőmérsékletét, (8,10,12 óra) és elmentjük az adatokat. Írassuk ki a hétfői hőmérsékletet! Írassuk ki a szerda 10 órait is! Erre 2db indexxel lehet hivatkozni: lista x. eleme, azon belül y.elem: heti_homerseklet[2][1]
Írassuk ki az egész héten mért hőfokokat is!

Listák egyesítése

Több módszerrel is egyesíthetünk listákat. A legegyszerűbben a + operátorral. Ebben az esetben csináltunk egy új listát, lista3 néven.
Használhatjuk az append-et is, tehát végigmegyünk az egyik lista minden elemén, és hozzáadjuk a másikhoz őket.
Harmadik módszer, hogy a lista1-hez adjuk a lista2 elemeit az lista.extend segítségével.

FüggvényMit csinál?
append()Új elem hozzáadása a listához, a lista végére
clear()Összes elem törlése a listából
copy()Lista másolása
count()Megadott tulajdonságú elemek megszámlálása
extend()Elem hozzáadása a lista végéhez
index()Visszaadja az első elem indexét, ami megadott tulajdonságú
insert()Megadott helyre tesz be új elemet a listába
pop()Törli a megadott indexű elemet
remove()Törli a megadott értékű elemet.
reverse()Elemek kiíratása fordított sorrendben. (nem rendez)
sort()Lista elemeinek sorba rendezése

Egyéb hasznos példák, listaelemek leképezése:

Készítsünk egy új listát, amibe az eredeti lista elemeinek a kétszeresét mentsük el!
Az eredeti listából válogassuk ki egy másikba a páros számokat!

Listákat tartalmazó listák (multidimenziós lista)

Ebben a példában minden listaelem egy-egy 3 elemű lista.
Az első autó sebessége: mivel 0-val kezdődik a listaelemek számozása, így 0, a listaelemen belül szintén 0-tól indul a számozás, tehát a sebesség az a 2. elem lesz! Tehát: autok[0][2]

Feladat: Készíts Python programot! Legyen benne két lista – vezetéknevek és keresztnevek. Mindkét listában legyen 5-5 név. Készíts a két lista elemeiből egy harmadik listát, véletlenszerűen összefűzve a neveket! Tehát 1 vezetéknévhez legyen társítva egy random keresztnév!

+Készítsd el az összes lehetséges kombinációt! (itertools függvény)