Andmetüübid Pythonis20. Oct '14
Sisse-ehitatud andmetüübid
Sisse-ehitatud tüüpides on:
i = 5 # i on täisarv (int)
f = 3.14 # f on ujukomaarv (float)
s = "baidijada" # Python 2.x baidijada (str)
u = u"Unicode sõne" # Python 2.x sõne (unicode)
Üksiku baidi või karakteri jaoks eraldi andmetüüpi pole nagu C-s, Pythonis on sõne defineeritav nii ühekordse (') kui ka kahekordse ülakomaga (").
Massiivid
Pythonis on esindatud nii muudetav (mutable) kui mitte-muudetav (immutable) massiiv mille erinevus tuleb välja eelkõige jõudluses:
t = (x, y) # t on mitte-muudetav massiiv (tuple)
l = [x, y] # l on massiiv (list)
Mõlemil saab rakendada:
t.index(y) # Tagastab elemendi y indeksi
t.count(y) # Tagastab objektide y hulga massiivis
Järgnevad aga on võimalikud vaid list tüüpi objektidel:
l.append(6) # Lisa täisarv 6 massiivi lõppu
l.extend([7,8]) # Lisa täisarve 7 ja 8 sisaldav massiiv lõppu
l.insert(0, 9) # Lisa täisarv 9 indeksile 0 ehk massiivi algusesse
l.remove(6) # Eemalda esimene element 6
l.pop() # Eemalda ning tagasta massiivi viimane element
Massiivide sorteerimiseks on kaks varianti, list tüüpi objekt toetab ise enda (in-place) sorteerimiseks ja ümber pööramiseks kahte meetodit:
l.sort() # Sorteeri massiiv
l.reverse() # Pööra massiiv ringi
Lisaks on olemas globaalsed funktsioonid reversed ja sorted, mida saab suvalisele massiivilaadsele (iterable) objektile rakendada ilma et nad sisendina kasutatud objekti mõjutaks:
sorted(t) # Tagasta list-tüüpi objekt mis sisaldab järestatud t elemente
reversed(t) # Tagasta iteraator millest saab küsida t elemente tagurpidises järjekorras
Sõnastik
Sõnastik on võti-väärtus andmestruktuur, mis on üsna sarnane Javast tuntud HashMapiga:
d = {"väga hea": 5, "pii": 3.14} # d on sõnastik (dict)
Sõnastik on muudetav (mutable):
d["hea"] = 4 # Lisa sõnastikku uus seos
d["keskmine"] = 3
d["halb"] = 2
d.pop("pii") # Eemalda võti "pii"
d["hea"] # Tagasta väärtus võtme "hea hinne" järgi
Sõnastiku kuvamine:
for key, value in d.items():
print key, "=>", value
Sorteeritud sõnastik ei ole enam dict, vaid 2-elemendistest massiividest koosnev massiiv:
sorted(d.items(), key=lambda(k,v):k) # Võtme järgi
sorted(d.items(), key=lambda(k,v):v) # Väärtuse järgi