Institute of Computer Science
  1. Courses
  2. 2022/23 fall
  3. Computer Programming (LTAT.03.001)
ET
Log in

Computer Programming 2022/23 fall

  • Üldinfo
  • 1. Muutuja ja avaldis
  • 2. Tingimuslause
  • 3. Funktsioon
  • 4. Korduslause
  • 5. Lihtsam failitöötlus. Sõned
  • 6. Kontrolltöö 1
  • 7. Järjend
7.1 Järjendid
7.2 Kodutöö
7.3 Harjutused
7.4 Silmaring: graafiliste mängude loomine
  • 8. Järjend 2
  • 9. Kahekordne tsükkel. Failitöötlus
  • 10. Andmestruktuurid
  • 11. Andmestruktuurid 2
  • 12. Kontrolltöö 2
  • 13. Rekursioon
  • 14. Objektorienteeritud programmeerimine
  • 15. Objektorienteeritud programmeerimine 2
  • Viiteid
  • 15. Objektorienteeritud programmeerimine 2

https://www.uttv.ee/naita?id=33896

  • 16. Kordamine. Projektide esitlused
  • Silmaringimaterjalid
  • Materjalid

Järjendid

Järjend (ingl list) on andmetüüp loetelude esitamiseks. Järjendi loomiseks on kõige lihtsam viis kirjutada järjendisse kuuluvad väärtused (ehk järjendi elemendid) komadega eraldatult nurksulgude vahele.

numbrid = [5, 1, 6, 8, 3.14]
nimed = ["Ats", "Lennart", "Keit"]
segu = [3, "õun"]

Salvestasime muutujasse andmed. Erinevalt sõnest saab järjendisse salvestada erinevaid tüüpi andmeid. Kui me oleme järjendi kirja pannud, siis tekib loomulikult küsimus, mida sellega teha saab? Mõnesid põhioperatsioone demonstreerib järgnev programm:

loomad = ["karu", "rebane", "koer", "kotkas"]

print("Praegune järjend on selline: ")
print(loomad)

loomade_arv = len(loomad)
print("Järjendis on " + str(loomade_arv) + " looma!")

loomad = loomad + ["kajakas", "hüljes", "rebane"]
print("Uus järjend on selline: ")
print(loomad)

if "rebane" in loomad:
    rebasteArv = loomad.count("rebane")
    print("Rebaseid on loomade järjendis " + str(rebasteArv))
else:
    print("Rebaseid ei ole loomade järjendis!")

koduloom = loomad[2]
print("Järjendi kolmas element on koduloom " + koduloom)

Katseta programm ise läbi. Mis ilmub ekraanile?

Ilmselt märkasid kahte operatsiooni (len ja in), mida oled juba kasutanud sõnede puhul. Kuna sõnet saab vaadelda kui sümbolite järjendit, siis ongi Pythonis korraldatud nii, et paljud järjendioperatsioonid toimivad ka sõnedega.

Mõned olulisimad järjendioperatsioonid.

AvaldisVäärtusSelgitus
min([2, 1, 3])1Minimaalne element
max([2, 1, 3])3Maksimaalne element
sorted([2, 1, 3])[1, 2, 3]Tagastab järjestatud järjendi
[1, 2] == [2, 1]FalseElementide järjekord loeb
sum([2, 1, 3])6Elementide summa

Nagu sõnedel on ka järjenditel indeksid, mis näitavad elemendi positsiooni. Samal põhimõttel saab järjendist elemente.

 a = [1,2,3,4]
 number = a[2]

Mis väljastatakse print(number) korral?

Järjendi video

Enesekontroll

<< Näita enesetesti >>


Negatiivsed indeksid

Vahepeal võib tulla ette, et me tahame järjendi lõpus olevaid elemente. Selleks, et ei peaks lugema hakkama, kus nad asuvad, on Pythonis negatiivsed indeksid.

järjend = [1,2,3,4,5,6,7]
print(järjend[-1])

Ekraanile ilmub kõige tagumine element ehk 7.

Funktsioon range. Saab kasutada 2 või 3 argumendiga. Järgnevas käsurea näites kasutame jälle funktsiooni list, et näha, mida mingi range variant tähendab.

>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(0, 5))
[0, 1, 2, 3, 4]
>>> list(range(2, 5))
[2, 3, 4]
>>> list(range(0, 15, 2))
[0, 2, 4, 6, 8, 10, 12, 14]
>>> list(range(5, 0, -1))
[5, 4, 3, 2, 1]
>>> list(range(0, 5, 1))
[0, 1, 2, 3, 4]

Ühe argumendiga variandi puhul algab loetelu 0-st ning lõpeb enne näidatud argumendi väärtuseni jõudmist. Kahe argumendi puhul algab loetelu esimese argumendi väärtusest ja lõpeb enne teise argumendini jõudmist. Kolme argumendi puhul näitab kolmas argument väärtuste kasvamise sammu.

Tihti on tarvis teha mingi sõne pisut suuremateks juppideks kui üksikud tähed – näiteks võib olla vaja jagada sõnena esitatud lause eraldi sõnadeks. Selle jaoks saab kasutada sõnemeetodit split.

>>>"Tere           Maailm!".split()
['Tere', 'Maailm!']
>>> "t;ere;31;p;äeva".split(";")
['t', 'ere', '31', 'p', 'äeva']

Kui split-i kasutada ilma argumentideta, siis tehakse lõikamine tühikute, tabulaatorite ja reavahetuste kohalt. Kui anda ette mingi muu sümbol, siis lõigatakse sõne juppideks just selle sümboli kohalt.

Käsu split „vastand“ on meetod join:

>>> ' '.join(['Tere', 'hommikust'])
'Tere hommikust'
>>> ';'.join(['CY2X44', '3', '66', 'T'])
'CY2X44;3;66;T'

Enesekontroll

<< Näita enesetesti >>


Järjendite viilutamine

Kirjutades nurksulgudesse indeksi asemel indeksivahemiku on järjendist (ja sõnedest) võimalik võtta alamjärjendeid (alamsõnesid):

>>> a = ['a', 'b', 'c', 'd', 'e', 'f']

>>> a[0:2]
['a', 'b']
>>> a[:2]
['a', 'b']

>>> a[2:6]
['c', 'd', 'e', 'f']
>>> a[2:]
['c', 'd', 'e', 'f']

>>> a[-2:]
['e', 'f']

>>> s = "Tere"
>>> s[0:3]
'Ter'

Koolonist vasakule tuleb kirjutada see indeks, millest alates tuleb elemente tulemusse kopeerida, ning koolonist paremale see indeks, mille juures tuleb kopeerimine lõpetada (st selle indeksiga element jääb tulemusest välja). Kui vasak indeks jätta kirjutamata, siis alustatakse esimesest elemendist, ja kui parem indeks jätta kirjutamata, siis kopeeritakse kuni järjendi lõpuni (viimane element kaasa arvatud).

Eelmises peatükis õppisime, kuidas for-tsükliga faili lugeda. Veel kaks funktsiooni on readline ja readlines. readline loeb failist ühe rea. See võib kasulik olla, kui teame, mis failis on, et sealt ainult rida lugeda. Veel on käsk readlines, mis loeb kõik failis olevad read ja salvestab nad järjendina. Kasutame juba varasemalt loodud teksitifaili andmed.txt.

 Taavi
 Mia
 Karl
 Sirli
 314
fail = open("andmed.txt")
andmed = fail.readlines()
print(andmed)
fail.close()
 Ekraanile väljastatakse: ['Taavi\n', 'Mia\n', 'Karl\n', 'Sirli\n', '314']

Nagu näeme, siis järjendis on elemendid sõne kujul, kus viimane element on \n, mis tähistab realõppu. Tuleb meeles hoida, et elemente töödeldes realõpumärk eemaldada.

Järjendi ja funktsiooni video

Enesekontroll

<< Näita enesetesti >>


  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment