Python listákról 3.rész (meg egy kicsi tuple...)

2. rész itt
1. rész itt

A listák előállításához jó tudni az alábbi trükköt:
>>> lista=[1,2]*4
>>> lista
[1, 2, 1, 2, 1, 2, 1, 2]

A listák összefűzésének ismerete is jól jöhet:
>>> lista1=[1,2,3]
>>> lista2=[4,5,6]
>>> lista3=lista1+lista2
>>> lista3
[1, 2, 3, 4, 5, 6]

Beszéljünk egy kicsit a tuple adattípusról is, mert nagyon hasonlít a listákhoz. A tuple-k egy nagyon fontos dologban különböznek a listáktól: az elemeik nem változtathatók, létrehozásuk után maradnak olyannak, aminek létrehoztuk.>>> t=(1,2,3)
>>> t
(1, 2, 3)
>>> t[0]
1
>>> t[1]
2
>>> t.append(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> t[2]=5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Ebből látszik, hogy a létrehozásuk kerek zárójellel történik szögletes helyett, az elemeit ugyanúgy indexekkel tudjuk megcímezni, de sem hozzáadni, sem elemet módosítani nem tudunk. Mire jó akkor ez nekünk???
Nos, a programozás során sok esetben fordul elő, hogy olyan elemek sorozatával kell dolgoznunk, amely nem változik meg a futásidő alatt, sőt még azt is el akarjuk kerülni, hogy netán véletlenül megváltoztassa a programunk. Ilyenkor a tuple kifejezetten hasznos.
De nem lehetne megoldani a dolgot listával? Végülis, ha odafigyelünk, hogy ne történjen módosítás, akkor a lista éppolyan jó. Egy dolog kivételével: a tuplék elérése pythonban jóval gyorsabb mint a listáké, ami hosszú sorozatoknál, nagy elemszám esetén gyorsabb programvégrehajtást eredményez.

Több dolog nem jut eszembe, be is rekesztem a dolgot ;)
Legközelebb a stringekről ejtek pár gondolatot.

UI:  a menügeneráló tkinterhez saját bejegyzést kapott, mivel tényleg inkább haladó téma. Itt olvasható

5 megjegyzés:

  1. Aptyuk, lehetne egy kicsit szajbaragosabban?:D

    VálaszTörlés
  2. :) honnan induljunk lako fiam? lyukkártya? :D

    VálaszTörlés
  3. Hát szerintem arra gondolt hogy a pythonnal ismerkedőnek nagy ugrás a listák után a példaprogram (Tkinter + objektumok), főleg ha objektumorientált programozást még nem tanult. :)

    VálaszTörlés
  4. igen, csak vicceltem vele, régről ismerjük egymást

    VálaszTörlés
  5. :D Sajnos nem tanultam soha programozast.. Csak a tudasvagy van meg, de az elso akadalynal feladom :D Parszor mar nekialltam pedig.. :D

    VálaszTörlés