25 Järjend
Selles peatükis tutvume järjendiga, mis on elementide järjestatud kogum.
Järjend (list)
Seni oleme programmides hoidnud andmeid eraldi muutujates: iga arvu või sõne oleme salvestanud teistest eraldi. Tihtipeale on kasulik paigutada andmeid ühisesse andmestruktuuri, mis muudab nende kasutamise lihtsamaks. Pythonis on üheks selliseks struktuuriks järjend (inglise keeles list). (Arvesta sellega, et erinevates programmeerimiskeeltes ja õppematerjalides võivad terminid erineda.)
Järjend koosneb elementidest, mis loetletakse nurksulgudes üksteisest komadega eraldatult. Näiteks on kaks järjendit
nädalapäevad = ["esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev", "pühapäev"] temperatuurid = [-4, 2, 6, 4, 4]
Järjendis võib esineda korduvaid elemente, näiteks järjendis temperatuurid
on element väärtusega
kaks korda.4
Eeltoodud järjendites on esimeses ainult sõned ja teises ainult täisarvud. Tegelikult võivad Pythonis ühe järjendi elemendid olla ka erinevat tüüpi, aga tavaliselt me seda võimalust ei kasuta.
Vaatame, mis tüüpi näitab Python ise muutuja
puhul:temperatuurid
temperatuurid = [-4, 2, 6, 4, 4] print(type(temperatuurid))
Enesekontroll (1 küsimus)
Järjendiga seotud operatsioonid. Indeksid
Vaatleme mõningaid järjenditega seotud operatsioone.
Järjendi loomine
nädalapäevad = ["esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev", "pühapäev"]
Järjendi ekraanile väljastamine
print(nädalapäevad)
Elementide arvu (järjendi pikkuse) leidmine
nädalapäevi = len(nädalapäevad) print('Järjendis on ' + str(nädalapäevi) + ' elementi')
Järjendisse kuulumise kontroll
if "palgapäev" in nädalapäevad: print("Palgapäev on järjendis") else: print("Palgapäev ei ole järjendis")
Konkreeetse elemendi väärtus indeksi (järjekorranumbri) abil
print(nädalapäevad[1])
Indeks märgitakse nurksulgudesse.
Pane tähele, et nädalapäevad[1]
annab meile järjendi teise elemendi, mitte esimese. Tavapäraselt algavad programmides indeksid numbrist 0, mis vastab esimesele elemendile. Tõepoolest
print(nädalapäevad[0])
annab järjendi (argikeelselt) esimese elemendi. Seetõttu tuleb olla tähelepanelik, kas räägitakse esimesest elemendist või elemendist indeksiga 1.
Kuna loendamine algab nullist, siis viimase elemendi indeks on ühe võrra väiksem järjendi pikkusest: järjendi
puhul on viimase elemendi indeks 6, sest elemente on 7.nädalapäevad
Katseta:
nädalapäevad = ["esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev", "pühapäev"] print(nädalapäevad[6]) print(nädalapäevad[7])
Kui üritada kasutada indeksit, millele vastavat elementi järjendis ei ole, siis ilmub veateade IndexError: list index out of range
.
Enesekontroll (1 küsimus)
Pythonis on tõepoolest lubatud kasutada negatiivseid indekseid.
Sõned kui järjendid
Paljud järjendite operatsioonid (kuid mitte kõik) on lubatud sõnede peal. Sõne puhul on elementideks sõne üksikud sümbolid:
linn = "Tartu" print(linn[2])
Viilutamine
Viilutamine on operatsioon, millega moodustatakse järjendi põhjal alamjärjend (sõne puhul alamsõne). Arvesta, et viilude loomine ei muuda esialgset järjendit. Katseta järgnevaid näiteid:
a = ['A', 'B', 'C', 'D', 'E'] print(a[0:2]) print(a[:2]) print(a[2:5]) print(a[2:]) print(a[-2:])
Enne koolonit kirjutatakse indeks, millest alates tuleb elemente kopeerida (selle indeksiga element kaasa arvatud). Kooloni järele kirjutatakse indeks, mille juures tuleb kopeerimine lõpetada (selle indeksiga element jääb tulemusest välja). Kui algav indeks kirjutamata jätta, siis alustatakse järjendi algusest. Kui lõpetav indeks kirjutamata jätta, siis kopeeritakse kuni järjendi lõpuni (viimane element kaasa arvatud).
Järgmises näites viilutatakse erinevaid sõnesid – nii neid, mis on muutujale väärtuseks antud, kui ka neid, mis pole.
sõne1 = 'Tartu' print(sõne1[1:4]) sõne2 = sõne1 print(sõne2[-2:]) print("Väike-Maarja"[4:9])
Enesekontroll (1 küsimus)
Veel operatsioone
Toome lõpetuseks tabeli, milles on nii juba mainitud kui mainimata operatsioone, mida järjenditega sooritada. Sarnaselt viilutamisele ei muuda need operatsioonid järjendit ennast. Katseta neid ka ise!
Avaldis | Väärtus | Kommentaar |
---|---|---|
len([2, 1, 4, 3, -5]) | 5 | Elementide arv |
min([2, 1, 4, 3]) | 1 | Minimaalne element |
max([2, 1, 4, 3]) | 4 | Maksimaalne element |
sum([2, 1, 4, 3]) | 10 | Elementide summa |
sorted([2, 1, 4, 3]) | [1, 2, 3, 4] | Tagastab järjestatud järjendi |
3 in [2, 1, 4, 3] | True | Kas esineb selline element? |
[2, 1] + [3, 1] | [2, 1, 3, 1] | Järjendite liitmine |
[2, 1, 4, 1].count(1) | 2 | Elemendi esinemiste arv |
[1, 2, 3] == [2, 1, 3] | False | Järjekord on oluline |
Järjendile ühe elemendi liitmiseks saab kasutada ka meetodit append
. Erinevalt eespool toodud operatsioonidest muutub sel juhul järjend ise. Järgnevas näites on toodud kaks viisi, kuidas järjendile element juurde lisada.
a = [5, 8] a.append(7) print(a) b = [5, 8] b += [7] print(b)
Vaata ka kokkuvõtvat videot.
Palun kommenteeri seda materjali Google’i küsimustikus.