Python: Adatszerkezetek I. – list

A lista a régi tömböknek felel meg, azzal a különbséggel, hogy a hagyományos tömbökben csak ugyanolyan típusú adatokat lehetett tárolni. Nos, a Python lista adatszerkezetében akármilyen típusú adatot bele lehet rakni. (Nyilván nem célszerű, de lehet. :-))

Itt az értékek sorban vannak, 0-val kezdődően sorszámozottak. Az elemekra az indexükkel tudunk hivatkozni.

A lista tulajdonképpen a tuple adatszerkezet módosítható változata. Az egyik leggyakoribb adatszerkezet. A lista elemei módosíthatók, a tuplei elemei viszont nem. (Maga a tuple módosítható, csak az elemei nem.)

Jele: [ ]

A listák legfontosabb metódusai

  • lista.append(elem): Hozzáadja az elem-et a lista-hoz
  • lista.extend(iteracio_minden_eleme): Az iteracio_minden_elem-ét hozzáfűzi a listához
  • lista.insert(i, x): Egy elem beszúrása adott pozícióba.
  • lista.remove(x): Az elsőként talált, x-el egyező elem törlése
  • lista.pop(i): Vesszük az i-dik elemet, majd töröljük. Ugyanez a del(lista[i]).
  • lista.clear(): Az összes elem törlése a lista-ból.
  • lista.index(x [,start[,end]]): Adott elem indexét adja vissza. A start és end paraméterekkel, megadható az vizsgált rész.
  • lista.count(x): Megszámolja hány olyan elem van, mint az x.
  • lista.sort(key=None, reverse=False): Rendezés, amely a lista elemeinek sorrendjét is megváltoztatja. Vigyázat, a rendezés nem egy egyértelmű dolog!
    			lista.sort(key=None, reverse=False)
    			print(lista)
    			lista.reverse()
    			print(lista)
    			Ez nem működik!!!: print(lista.sort())
    		
  • sorted(lista): A lista elemeinek sorrendje nem változik meg!!!
  • lista.reverse(): Az elemek helyének megfordítása a lista-ban.
  • Egy mintaprogram a jobb megértéshez. Próbáld ki!

    """ A sort() és sorted()
    A legegyszerűbb különbség, hogy sort() közvetlenül MÓDOSÍTJA a listát,
    és nem ad vissza értéket, míg sorted() a listát nem változtatja meg,
    és a rendezett listát adja vissza. """
    
    nevek = ["Dzsenifer", "Szándokán", "Árcsibáld", "Özsénia", "Klotild", "Perjámos"]
    print(nevek)
    nevek.sort()
    print(nevek)
    
    print("\n")
    virágok = ["krizantém", "tulipán", "jázmin", "szegfű", "nárcisz"]
    print(virágok)
    virágok.sort(reverse=True)
    print(virágok)
    
    print("\n")
    állatok = ["majom", "kutya", "tigris", "egér", "zsiráf", "cica"]
    print(állatok)
    sorted(állatok)
    print(állatok)
    
    print("\nállatok rendezve:")
    print(sorted(állatok))
    print(állatok)
    
    állatok.reverse()
    print(állatok)
    
  • lista.copy(): Visszatér a lista másolatával.

Lista módosítására szolgáló szeletelési (slicing) technikák

Egy vagy több elem beszúrása egy lista tetszőleges helyére

lista = [„krumpli”, „sajt”, „tejföl”, „hagyma”]
lista[2:2] = [„szalonna”]
     eredmény: [„krumpli”, „sajt”, „szalonna”, „tejföl”, „hagyma”]
lista[5:5] =[„só”, „bors”]
     eredmény: [„krumpli”, „sajt”, „szalonna”, „tejföl”, „hagyma”, „só”, „bors”]

Megjegyzés:

  • Ha a [ ] operátor az egyenlőségjel baloldalán szerepel, – azért, hogy eleme(ke)t szúrjunk be a listába vagy töröljünk a listából – akkor kötelező megadni a céllista egy szeletét (azaz két indexet a zárójelben) nem pedig egyetlen elemet a listában.
  • Az egyenlőségjel jobboldalán megadott elemnek pedig egy listának kell lenni. Ha csak egyetlen elemet akarunk beszúrni, akkor azt szögletes zárójelek közé kell tenni, hogy így először egy egyelemű listává alakítsuk. (A lista[1] elem nem lista, – hanem a „sajt” sztring – míg a lista[1:3] már egy listát jelöl.)

Elemek törlése/szeletelése

del lista[2]: A lista nevű lista 2. indexű elemének törlése. (Természetesen használható itt is a szeletelés technikája.)
lista[2:5] = [ ]     (A lista [2:5] szeletét egy üres listával helyettesítjük, ami így egy törlésnek felel meg.)
     eredmény: [„krumpli”, „sajt”, „só”, „bors”]
lista[1:3] = [„víz”]
     eredmény: [„krumpli”, „víz”, „bors”]
lista[1:] = [„pirospaprika”, „köménymag”, „paprika”, „paradicsom”]
     eredmény: [„krumpli”, „pirospaprika”, „köménymag”, „paprika”, „paradicsom”]

Egy példa program