Python
Seznami
Morda si že ugotovil, da Python razpozna stvari, ki spadajo v različne
razrede podatkov (tipe podatkov). Doslej smo spoznali:
Števila
Cela števila (Integers): 1, 456,
-789
Realna števila (Floating-point):
1.23,
12.3, 123.0
Dolga cela števila (Long integers):
123456789012345678901234L
Nize (Strings)
Med dvojnimi narekovaji : "Niz je niz"
Med enojnimi narekovaji: 'ne glede na
narekovaje"'
Ne pa med takimi: `to pa ni niz`
Čas je, da spoznamo tretji tip, ki je zelo pripraven za združevanje
podatkov v skupine. To je seznam
(list) podatkov Sezname pišemo z znakom "[" na
začetku in
znakom "]" na koncu, med posameznimi vrednostmi pa je vejica.
Posamezne vrednosti so lahko poljubnega tipa. Na primer:
[1, 2, 3] ["To", "je", 'primer', 'seznama']
|
Ali pa primeri z mešanimi podatki:
["ena", 2, "deset", -23] [2, "na", 8, "potenco je", 256]
|
Lahko vsebujejo tudi druge sezname:
["seznami", ["so", "zabavni"]] ["gnezdenje", ["vec", ["seznamov", ["nas"], "lahko"], "zmede"], "."]
|
Imamo lahko celo prazne sezname:
Mimogrede, prazne sezname interpretiramo z logično vrednostjo false.
Morda se sprašuješ, kako bi take sezname uporabljal?
Počakaj,
najprej moramo vedeti, da lahko dostopamo do posameznih elementov
seznama tako, da za imenom seznama uporabimo oglate oklepaje "[]"'. Na
primer:
a = ["to", "je", "uporabno"] print a[0] # bi izpisalo to print a[1] # bi izpisalo je print a[2] # bi izpisalo uporabno print a[3] # to pa bila napaka a[1] = "ni" # Posamezne elemente lahko spreminjamo print a # izpise ["to", "ni", "uporabno"]
|
Seznami so vedno oštevilčeni začenši z nič. Če bi
seznam imel 7
elementov, bi zadnji imel številko 6.
Hmm, sprešuješ, kaj pomenijo znaki #?
S tem nakazujemo komentarje. Python ignorira vse, kar v dani vrstici
sledi znaku # (razen, če je # znotraj nekega niza). Komentarje
pišemo zato, da razložimo, kaj naš program počne. Dobri
programerji
svoje programe vedno primerno komentirajo.
Kako bi torej lahko uporabil naslednji seznam:
SeznanNakupov=['mleko', "kruh", 'sir', 'salama', 0] index=0 # index bo kazal na stvar v seznamu # ki jo pravkar uporabljamo while SeznamNakupov[index] != 0: # Ko pridemo do 0, smo opravili print "Kupiti moras", SeznamNakupov[index], "!" index=index+1 # korak na naslednjo stvar print "To je vse."
|
V tem seznamu smo uporabili marker ("0"), da z njim označimo konec
seznama. To seveda ni najbolj elegantno. Zato je čas, da spoznamo eno
od pripravnih funkcij, vgrajenih v Pythonu. Dolžino seznama dobimo s
funkcijo "len". Na
primer:
len(["a", "seznam"]) # vrne 2 velikSeznam = [1,2,3,4,5,6,7,8,9] dolzina = len(velikSeznam) # zato bo dolzina = 9
|
Sedaj lahko neelegantni program polepšamo:
SeznamNakupov=['mleko', "kruh", 'sir', 'salama'] index=0 # index bo kazal na stvar v seznamu # ki jo pravkar uporabljamo while index < len(SeznamNakupov): print "Kupiti moraš", SeznamNakupov[index], "!" index=index+1 # korak na naslednjo stvar print "To je vs
|
Seznam lahko tudi podaljšujemo z dodajanjem vrednosti. To
storimo s
funkcijo append:
a=[1, 2, 3] a.append(4) print a # would bi izpisalo [1, 2, 3, 4]
|
Čas je za krajšo nalogo: Napiši program, ki računa
Fibonaccijevo
zaporedje. Začni s seznamom, ki vsebuje
Razširjaj seznam v skladu z definicijo Fibonaccijevega zaporedja:
Fib[n] = Fib[n-1] + Fib[n-2]
|
Program naj vpraša
uporabnika, koliko vrednosti naj izračuna. Nato pa uporabimo
zanko "while" za širjenje seznama, dokler ne dobimo dovolj
vrednosti. Končno izpišimo rezultirajoči seznam.
Da bo bolj jasno, Fibonaccijevo zaporedje poteka tako:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
|