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 4 kaks korda.

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 temperatuurid puhul:

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 nädalapäevad puhul on viimase elemendi indeks 6, sest elemente on 7.

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.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

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

Jaga seda raamatut