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...

4 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
  3. ha bekerek egy stringet pl huszar
    utána azzal tudok konkrétan hivatkozni egy listára ?
    hogy ne kelljen ellenőrizgetni h mit irt be a felhasználó?
    Hanem úgy mint egy váltózót simán használom?

    VálaszTörlés