< eelmine | 11. nädala sisukord | järgmine > |
11.2 HULK
Veel üks Pythoni andmestruktuur, kuhu saab mitmeid elemente paigutada, on hulk (ingl set). Hulga tähistamiseks kasutatakse loogelisi sulgusid {
ja }
. Teise andmestruktuuri (nt järjendi või enniku) 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)
Ülesanne
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}
Ülesanne
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äsk | Selgitus |
---|---|
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 |
Näiteks vaatame, kuidas remove
eemaldab.
>>> h = {1, 5, 7, 3} >>> h.remove(5) >>> h {1, 3, 7}
Proovige teisi käske ka!
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.
Operatsioon | Selgitus |
---|---|
& | ü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!
Ülesanne
Ülesanne
Ülesanne
< eelmine | 11. nädala sisukord | järgmine > |