spam = ['cat', 'bat', 42, True, 'dog']
print(spam[2])
print(spam[-2])42
True
Gradiva za to poglavje so:
Indeksi morajo biti cela števila, sicer pride do napake. Indeksi se začnejo z 0 (prvi element). Negativni indeksi so indeksi šteti s konca seznama proti začetku (-1 je indeks zadnjega elementa, -2 predzadnjega). Če podamo indeks, ki je večji od indeksa zadnjega elementa, Python javi IndexError.
spam = ['cat', 'bat', 42, True, 'dog']
print(spam[2])
print(spam[-2])42
True
Podsezname dobimo s sintakso seznam[zacetni_indeks:koncni_indeks:korak]. Nobeno od teh treh števil ni obvezno.
spam = ['cat', 'bat', 42, True, 'dog']
print(spam[1:4:2])
print(spam[:3])
print(spam[::2])
print(spam[::-1])['bat', True]
['cat', 'bat', 42]
['cat', 42, 'dog']
['dog', True, 42, 'bat', 'cat']
Podobno je za nize.
spam = "besedna zveza"
print(spam[2])
print(spam[1:4])
print(spam[:3])
print(spam[::2])
print(spam[::-1])s
ese
bes
bsdazea
azevz andeseb
Število elementov seznama ali število znakov v nizu dobimo s funkcijo len(seznam_ali_niz).
c = [1, 2, 3, "abeceda"]
print(len(c))
d = "terminologija"
print(len(d))4
13
Več seznamov / več nizov staknemo s plusom.
sez1 = [1, 2, 3]
sez2 = [4, 5, 6]
print(sez1 + sez2)
niz1 = "a"
niz2 = "b"
print(niz1 + niz2)[1, 2, 3, 4, 5, 6]
ab
Sezname lahko združimo tudi z metodo extend. Za zgornji primer: seznam1.extend(seznam2).
S ključno besedo in preverimo ali seznam vsebuje nek element, kar lahko uporabimo npr. v if stavku. Podobno lahko z in preverimo ali niz vsebuje nek znak.
print('cat' in ['cat', 'bat', 42, True, 'dog'])
print('c' in 'beseda')True
False
Po elementih seznama / znakih niza se lahko sprehodimo z zanko for.
spam = ['cat', 'bat', 42, True, 'dog']
for element in spam:
print(element)cat
bat
42
True
dog
spam = "abc"
for element in spam:
print(element)a
b
c
Ko v zanki potrebujemo indekse, pride prav spodnji pristop, kjer do elementov seznama dostopamo z indeksi.
Primer: zanima nas razlika med zaporednimi elementi seznama.
seznam = [1, 2, 3, 5, 6, 7]
for i in range(len(seznam) - 1):
print(seznam[i+1] - seznam[i])1
1
2
1
1
Tretji pristop k sprehodu po elementih seznama / znakih niza pa je funkcija enumerate (glej dno te strani za primer).
Vrednost elementa v seznamu lahko spremenimo.
spam = ['cat', 'bat', 42, True, 'dog']
spam[1] = 'aardvark'
print(spam)['cat', 'aardvark', 42, True, 'dog']
V nizu znakov ne moremo tako spreminjati! Uporabimo pa lahko podsezname:
s = "abcdef"
index = 3
s = s[:index] + "ž" + s[index + 1:]
print(s)abcžef
Elemente seznama lahko zbrišemo s ključno besedo del.
spam = ['cat', 'bat', 42, True, 'dog']
del spam[2]
print(spam)['cat', 'bat', True, 'dog']
Element lahko dodamo na konec seznama z metodo append.
spam = ['cat', 'bat', 42, True, 'dog']
spam.append(3)
print(spam)['cat', 'bat', 42, True, 'dog', 3]
Pri nizih ne moremo uporabiti metode append, lahko pa dodamo elemente z operatorjem +. Tudi tu lahko uporabimo okrajšavo +=.
s = "abcd"
s += "e" # oziroma s = s + "e"
print(s)abcde
len(seznam_ali_niz) vrne število elementov seznama oz. število znakov v nizu
enumerate(seznam) vrne zaporedje parov, v katerih so na drugem mestu vrednosti iz podanega seznama, na prvem mestu pa so njihovi indeksi. Funkcija vrne poseben tip - da dobimo seznam, moramo ta tip pretvoriti s funkcijo list(). V for zanki lahko uporabimo enumerate brez list.
print(list(enumerate(["a", "b", "c"])))[(0, 'a'), (1, 'b'), (2, 'c')]
for indeks, element in enumerate(["a", "b", "c"]):
print(indeks, element)0 a
1 b
2 c
zip(seznam1, seznam2, ...) vrne zaporedje naborov istoležnih elementov v podanih seznamih. Funkcija vrne poseben tip - da dobimo seznam, moramo ta tip pretvoriti s funkcijo list(). V for zanki lahko uporabimo zip brez list.print(list(zip('xyz', [10, 20, 30], [4, 5, 6])))[('x', 10, 4), ('y', 20, 5), ('z', 30, 6)]
for x in zip('xyz', [10, 20, 30], [4, 5, 6]):
print(x)('x', 10, 4)
('y', 20, 5)
('z', 30, 6)