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:
for i1 in range(len(lista)):
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’,’ö’,’ü’,’ó’,’ő’,’ú’,’é’,’á’,’í’]:
else:
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)):
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):
Csökkenőbe így lehet rendezni: lista.sort(key=rendez,reverse=True)
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:
Tartalmazás vizsgálat:
if 1 in (1, 2, 3):