A python listákról

Mik a pythonban a listák?
Ha még nem programoztál, akkor mondjuk elemek vesszőkkel elválasztott sora, ha igen, akkor meg mondjuk azt, hogy olyan mint egy tömb, egy array.
Persze egyik sem, de nem baj :)

A listát két szögletes zárójellel hozhatjuk létre. Csináljunk egy üres listát:
>>> lista=[]
>>> lista
[]

De akár csinálhatunk egy elemeket is tartalmazó listát is:
>>> lista=[1,2,3]
>>> lista
[1, 2, 3]

A listákban az elemek típusa különböző is lehet. Emiatt is univerzálisabb a lista, mint más nyelvekben a tömbök, amik egyazon típust tudnak csak tárolni.
>>> lista=[1,2,'a',3.8]
>>> lista
[1, 2, 'a', 3.7999999999999998]


A listák elemeit azok indexe segítségével érhetjük el. Az előző listát felhasználva. Negatív indexekkel a lista vége felől címezhetjük az elemeket:
>>> lista[0]
1
>>> lista[2]
'a'
>>> lista[-1]
3.7999999999999998
>>> lista[-3]
2

Nem létező elemek indexére a python hibát ad:
>>> lista[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

A listát szeletelni is tudjuk, ehhez a címzésnél kettősponttal elválasztva két indexet adjunk meg:
>>> lista[2:4]
['a', 3.7999999999999998]

Ha az egyik indexet elhagyjuk, akkor az a lista eleje vagy vége lesz, attól függően, melyiket hagytuk el:
>>> lista[:3]
[1, 2, 'a']
>>> lista[3:]
[3.7999999999999998]
>>> lista[2:]
['a', 3.7999999999999998]
>>> lista[4:]
[]

De várjunk csak! Az utolsó szeletelés nulla elemet adott vissza! Hogy lehet ez? Négy elem van a listában, az indexelés nulláról indul, tehát nem lehet '4' indexű elem. Próbáljuk ki!
>>> lista[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Valóban nincs. A megoldás az anomáliára a következő:
elemek     1     2    'a'   3.8 
        |-----|-----|-----|-----|
indexek 0     1     2     3     4
       -5    -4    -3    -2    -1


Látható hogy a lista indexei az elemek "közé" mutatnak, a '4' a lista végét jelöli, így a [4:] szelet maga a lista végét jelenti, ami elemet nem tartalmaz, tehát üres lista. Ugyanez érvényes a [:-5] szeletre is. Viszont ezek alapján könnyen belátható, hogy:
>>> lista[2:3]
['a']

Folytatatása következik...

3 megjegyzés:

  1. nagyon hasznos, köszi.

    VálaszTörlés
  2. Már megörültem hogy végre egy értelmes oldal ahol a 0-ról indulók is végre tanulhatnak vmiféle programozást. Ehhez képest ugyanúgy érthetetlen az egész, mint bármely más könyvnél v. blognál. Nem hiába, a szabályt nem lehet felülírni: "aki érti az csinálja csak épp tanítani nem tudjai!"

    VálaszTörlés
    Válaszok
    1. Ez inkább tényleg blog, nem tankönyv. A teljesen nulláról indulóknak biztos kevés, ám erre szerintem rengeteg dolgot lehet találni. Az eleje idegen és nehéz, sok türelem kell hozzá...

      Törlés