Fájlok írása Pytonban!
Elkészült a Python nyelv Szövegfájlok írása tananyagunk! Jó tanulást, jó gyakorlást!

<info9>

Listák

Bár a tömbök kényelmesek, és gyorsan lehet velük dolgozni, mégis van egy fontos korlátjuk: a létrehozásuk pillanatában tudnunk kell, hogy hány elemet szeretnénk bennük tárolni, a méretüket utólag nem módosíthatjuk. Erre a "problémára" kínálnak megoldást a C# nyelvben a listák. Bár a listák általában lassabbak, és kevésbé erőforráshatékonyak mint a tömbök, cserébe sokkal rugalmasabbak, és mivel ésszerű adatmennyiségek esetén ezek az erőforráskülönbségek viszonylag elenyészőek, így a legtöbb projekt esetén jó választás lehetnek az adatok tárolására, rendszerezésére.

A tömbökhöz hasonlóan a listák is egyforma adattípusú adatokat tudnak tárolni, lehetnek benne egyszerű adattípusok is, de akár struktúrákat, vagy osztályok példányait is tárolhatjuk benne.

Listák létrehozása

Miután kiválasztottuk a megfelelő adattípust, máris létrehozhatunk belőle egy üres listát. Hozzunk létre például egy névsor nevű, stringekből álló listát:

List<string> névsor = new List<string>();

Elemek hozzáadása

Most, hogy a lista létrejött, elhelyezhetünk elemeket benne az .Add metódus használatával. Az új elemek a lista végére fognak kerülni, és természetesen csak a listának megfelelő adattípusúak lehetnek. Nézzük:

névsor.Add("Andris");

string nev = "Béla";
névsor.Add(nev);

Ezzel be is került mindkét név a listába!

Itt a húsvét!

Szeretnél az ünnepek alatt is gyakorolni? Vár az Easter Bug Hunt játékunk! Csatlakozz, és keresd meg az összes hibát - akár még jutalom is ütheti a markod!

Irány a játék

Elemek elérése

A lista elemeit, a tömbökhöz hasonlóan indexeléssel érhetjük el. A C# nyelvben az indexek 0-val kezdődnek, azaz a lista legelső eleme a 0-s sorszámot kapja. Jelen esetben tehát Andris nevét a névsor[0], míg Béla nevét a névsor[1] elem tartalmazza.

A listában található elemek számát a lista .Count tulajdonsága mutatja meg, amely hasonlóan működik a tömbök .length paraméteréhez. Ezt használva tehát, egy for ciklus segítségével könnyedén bejárhatjuk a listánk elemeit. Ha például szeretnénk a fentebb létrehozott Névsor lista elemeit sorban kiíratni, azt megtehetjük így:

for(int index=0; index < névsor.Count ; ++index)
{
   Console.WriteLine(névsor[index]);
}

Elemek törlése

Mivel a listák hossza futásidőben változhat, ezért lehetőségünk van elemeket törölni is belőle menet közben. Erre a legegyszerűbb lehetőség, ha a .RemoveAt eljárást használjuk, aminek 1 darab int paramétere van: az eltávolítani kívánt elem indexe. Ha tehát szeretném a listából eltávolítani a harmadik elemet (ami a C# szemszögéből ugyebár a 2-es indexű), ezt megtehetjük ezzel a sorral:

névsor.RemoveAt(2);

Érdemes megjegyezni azonban, hogy ha egy elemet eltávolítunk, akkor a mögötte lévő elemek "becsúsznak a helyére", azaz az eltávolított elem utáni elemek indexe 1-gyel csökkenni fog, például így:

Elem eltávolítása a listából

Elemek keresése

Hiányzó elem
Az IndexOf –1 értéket ad vissza, ha az elem nem található meg a listában, így ez is használható az elem meglétének ellenőrzésére a Contains helyett.

Bár a listában egy elem megkeresését magunk is megvalósíthatjuk, a C#-nak erre is van kész módszere. Ha arra vagyunk kíváncsiak, hogy egy adott elem szerepel-e a listánkban, használhatjuk a lista Contains metódusát, ha pedig egy listaelem sorszámát szeretnénk meghatározni, az IndexOf lesz a segítségünkre.

Nézzünk egy példát:

List<string> nevek = new List<string>();
nevek.Add("Anna");
nevek.Add("Cili");
nevek.Add("Kristóf");

Console.WriteLine(nevek.Contains("Anna")); // True
Console.WriteLine(nevek.Contains("Béla")); // False
Console.WriteLine(nevek.IndexOf("Anna")); // 0
Console.WriteLine(nevek.IndexOf("Béla")); // -1