= ['cat', 'bat', 42, True, 'dog']
spam 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
.
= ['cat', 'bat', 42, True, 'dog']
spam 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.
= ['cat', 'bat', 42, True, 'dog']
spam 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.
= "besedna zveza"
spam 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)
.
= [1, 2, 3, "abeceda"]
c print(len(c))
= "terminologija"
d print(len(d))
4
13
Več seznamov / več nizov staknemo s plusom.
= [1, 2, 3]
sez1 = [4, 5, 6]
sez2 print(sez1 + sez2)
= "a"
niz1 = "b"
niz2 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.
= ['cat', 'bat', 42, True, 'dog']
spam for element in spam:
print(element)
cat
bat
42
True
dog
= "abc"
spam 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.
= [1, 2, 3, 5, 6, 7]
seznam 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.
= ['cat', 'bat', 42, True, 'dog']
spam 1] = 'aardvark'
spam[print(spam)
['cat', 'aardvark', 42, True, 'dog']
V nizu znakov ne moremo tako spreminjati! Uporabimo pa lahko podsezname:
= "abcdef"
s = 3
index = s[:index] + "ž" + s[index + 1:]
s print(s)
abcžef
Elemente seznama lahko zbrišemo s ključno besedo del
.
= ['cat', 'bat', 42, True, 'dog']
spam del spam[2]
print(spam)
['cat', 'bat', True, 'dog']
Element lahko dodamo na konec seznama z metodo append
.
= ['cat', 'bat', 42, True, 'dog']
spam 3)
spam.append(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 +=
.
= "abcd"
s += "e" # oziroma s = s + "e"
s 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)