Arvutiteaduse instituut
  1. Kursused
  2. 2017/18 kevad
  3. Programmeerimise alused II (LTAT.TK.001)
EN
Logi sisse

Programmeerimise alused II 2017/18 kevad

  • Kursuse info
  • 1. Kahemõõtmeline järjend
  • 2. Kahekordne tsükkel
  • 3. Andmestruktuurid

3.1 Järjend ja ennik 3.2 Hulk 3.3 Sõnastik 3.4 Andmestruktuuride võrdlus 3.5 Sõne 3.6 Silmaring: Andmebaasid

  • 4. Viitamine ja muteerimine
  • 5. Testimine ja silumine. Rekursioon
  • 6. Rekursioon II
  • Korraldajad
III OSA sisukord

3.2 HULK

Veel üks Pythoni andmestruktuur, kuhu saab mitmeid elemente paigutada, on hulk (ingl set). Hulga tähistamiseks kasutatakse loogelisi sulgusid { ja }. Teise andmestruktuuri põhjal saab hulga teha funktsiooniga set.

h1 = {8, 2, 3, 6, 7}
h2 = set([6, 4, 5])
h3 = set('Tere hommikust')

Tühja hulga loomiseks tuleb kasutada set(), sest tühjad loogelised sulud {} tähistavad hoopis tühja sõnastikku, mida vaatame järgmises peatükis.

Nagu matemaatilises hulgaski, pole Pythoni hulgas elementide järjekord oluline. Nii võib ka Python hulga elemendid teises järjekorras esitada kui need sisestatud on.

>>> {8, 6, 4}
{8, 4, 6}

See tähendab ka muuhulgas, et kaks hulka on võrdsed siis, kui nad sisaldavad samu elemente. Need ei pea olema samas järjekorras (tegelikult polegi elementidel järjekorda).

>>> {42, 11} == {11, 42}
True

Kuna elementide järjekord pole määratud, siis ei saa ka üksikut elementi indeksi abil kätte. Küll aga saame for-tsükli abil hulga kõigi elementidega midagi ette võtta, hoolimata sellest, "mitmendat" elementi hetkel käsitleme:

for el in h3:
    print(el)


Teine oluline hulga tunnus pärineb samuti matemaatilistelt hulkadelt: hulgas ei ole korduvaid elemente. Kui püüame elemente hulga sees korrata, siis arvestatakse neid ikkagi ühekordselt.

>>> {4, 6, 7, 4}
{4, 6, 7}


Hulgad on muteeritavad: neid saab muuta elemente lisades ja eemaldades. Kui järjendi puhul oli elemendi juurde lisamiseks käsk append, mis tähendab lõppu lisamist, siis hulga puhul "lõpp" ei tähenda midagi ning seepärast on võetud elementide lisamiseks kasutusele hoopis käsk add. See lisatakse sarnaselt append-ile hulga lõppu punktiga:

>>> h = {42, 11}
>>> h.add(10)
>>> h
{10, 42, 11}

Veel mõned hulkade peal töötavad käsud on toodud järgmises tabelis:

KäskSelgitus
h.remove(el)eemaldab elemendi el hulgast h
h.update(h1)täiendab hulka h teise hulga h1 elementidega
h.pop()eemaldab ja tagastab hulgast h (juhusliku) elemendi
h.clear()tühjendab hulga h
h.copy()tagastab hulga h koopia

Hulga suurust saab len funktsiooni abil nagu järjendeid ja ennikuidki. Samuti saab hulgas sisalduvust kontrollida analoogselt:

>>> h = {42, 11}
>>> len(h)
2
>>> 42 in h
True

Ka paljud muud funktsioonid nagu min ja max töötavad hulkadega samamoodi nagu järjendite või ennikutega. Proovige ise järgi!

Hulkadega saab ka selliseid operatsioone teha, mida järjendite või ennikutega ei saa. Tähtsaimad neist on toodud järgnevas tabelis. Kõik need operatsioonid on binaarsed (kahekohalised) ja vastava operatsiooni märk tuleb panna kahe hulga vahele.

OperatsioonSelgitus
&ühisosa ehk hulk elementidest, mida sisaldavad mõlemad hulgad
|ühend ehk hulk elementidest, mida sisaldavad üks või teine või mõlemad hulgad
-vahe ehk hulk elementidest, mida sisaldab esimene, aga ei sisalda teine hulk
^sümmeetriline vahe ehk hulk elementidest, mida sisaldavad üks või teine hulk, aga mitte mõlemad
<on range alamhulk ehk kas esimene hulk on saadud teisest elemente eemaldades
>on range ülemhulk ehk kas teine hulk on saadud esimesest elemente eemaldades
<=on mitterange alamhulk ehk kas esimene hulk on saadud teisest elemente eemaldades või sellega võrdne
>=on mitterange ülemhulk ehk kas teine hulk on saadud esimesest elemente eemaldades või sellega võrdne

Proovige järgi, kuidas need operatsioonid töötavad!





III OSA sisukord
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo