9 Ennik

Pythonis on olemas andmestruktuur, mille nimi on ennik (ingl tuple). Naljakas eestikeelne nimi on tuletatud sellest, et kolme elemendiga kogumit nimetatakse kolmikuks, nelja elemendiga nelikuks, viiega viisikuks jne. Kui sellises struktuuris on suvaline arv n elementi, siis võiks saadut nimetada nimega n-ik ehk eestipärasemalt ennik.

Enniku tähistamiseks kasutatakse ümarsulgusid ( ja ). Näiteks kolmeelemendilise enniku ehk kolmiku saame tekitada nii:

kolmik = (1, 4, 6)

Üheelemendilise enniku (üksiku) tekitamine on pisut ebaintuitiivsem:

yksik = (1,)

Koma ainukese elemendi järel ütleb Pythonile, et tegemist on ennikuga, mitte aritmeetilise avaldisega, kus ümarsulud omavad teist tähendust.

Ennikute omadusi

Paljud enniku omadused on järjendi omadustega üsna sarnased:

  • Ennikus on elementide järjestus oluline: (1, 2) ei ole võrdne ennikuga (2, 1).
  • Enniku elementide poole saab pöörduda indeksite abil: kui enn on ennik, siis enn[2] on selle enniku kolmas element.
  • Enniku pikkuse saame teada funktsiooni len abil.
  • Mingi elemendi ennikusse kuulumist saame kontrollida võtmesõna in abil: 3 in enn väärtuseks on kas True või False.
  • Funktsioonide min ja max abil saame leida ennikust vastavalt minimaalse või maksimaalse elemendi (eeldusel, et elemendid on mingil moel järjestatavad, nt arvud).
  • Ennikut saab viilutada: enn[1:5] annab alamenniku, milles on enn elemendid indeksitega 1, 2, 3 ja 4.

Siiski pole järjend ja ennik funktsionaalsuse mõttes võrdsed. Enniku kõige olulisem erinevus peitub selles, et see ei ole muudetav (täpsemalt muteeritav, ingl mutable). Ennikusse ei ole pärast selle tekitamist võimalik elemente lisada, neid eemaldada ega muuta, seega pole ennikul näiteks järjendite tuntud käske append, remove, pop, insert, reverse ega extend. Sellest tuleneb, et ennik on alati fikseeritud pikkusega.

Enesekontroll (1 ülesanne)

Ennikute kasutusalasid

Ennikuid kasutatakse sageli just siis, kui struktuuri pole vaja programmi käivitamise ajal muuta. Näiteks kui programmis on vaja tähistada objekte, millel on mitu omadust, kuid mida pole vaja programmi töötamise ajal muuta, siis on mõistlik nende esitamiseks kasutada ennikuid.

Samuti kasutatakse ennikuid siis, kui funktsioonist on vaja tagastada mitu väärtust. Näiteks see funktsioon leiab kahest järjendist elemendid, mille korrutis on suurim, ja tagastab need elemendid paarina:

def suurim_korrutis(lst1, lst2):
    suurimad = (0, 0)
    for el1 in lst1:
        for el2 in lst2:
            if el1 * el2 > suurimad[0] * suurimad[1]:
                suurimad = (el1, el2)
    return suurimad

Enesekontroll (1 ülesanne)

Mitme väärtuse tagastamisest

Kui ühe funktsiooni asemel, mis tagastab enniku tulemustest, on võimalik teha mitu funktsiooni, millest igaüks leiab ühe üksiku (väiksema) osa tulemustest, siis on tihti parem stiil valida mitme funktsiooniga variant. Mida väiksemad ülesanded saate eri funktsioonide vahel ära jaotada, seda lihtsam on tavaliselt koodist aru saada, sealt vigu otsida ja seda hallata.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvaraarendus on loodud Eno Tõnisson, Tauno Palts, Kaarel Tõnisson, Merilin Säde jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut