Seznami so dejansko tabele, v katerih lahko hkrati shranimo več podatkov.
Če smo za spremenljivko dejali, da lahko shranimo vanjo podatke, potem seznam izgleda kot skupina spremenjlivk.
Uvod
Seznami so dejansko tabele, v katerih lahko hkrati shranimo več podatkov.
Če smo za spremenljivko dejali, da lahko shranimo vanjo podatke, potem seznam izgleda kot skupina spremenjlivk.
Sintaksa
Seznami so videti nekoliko drugače od običajnih spremenljivk. Konec koncev jih mora od običajnih spremenljivk ločiti tudi sam python.
Če smo spremenljivkam prirejali po en podatek, lahko seznamu priredimo več podatkov. Te podatke nevedemo v oglatih oklepajih, ločene z vejico.
imeSeznama = [prvi podatek, drugi podatek, ..., zadnji podatek]
starost = 13
starosti = [13,15,10,35]
Očitno imamo v "starosti" shanjene starosti štirih oseb.
Vrste podatkov v seznamih
Če se spomnimo kakšne vrste podatkov lahko prirejamo spremenljvkam?
Vemo da lahko spremenljivkam prirejamo (v njih shranjujemo) različne tipe podatkov, vendar v eno spremnljivko vedno isti tip.
Pri seznamih je nekoliko drugače. V isti seznam lahko shanjujemo različne tipe podatkov. Tako je lahko na primer na prvem mestu v seznamu podatek tipa niz, na drugem mestu pa recimo število.
Kljub vsemu bomo največkrat srečali sezname, kibodo vsebovali podatke istega tipa. Recimo seznam števil ali pa seznam nizov.
imeSeznama = [število, 'niz', ...]
starosti = ['Srečo', 13, 'Jaka', 15]
V zgornjem seznamu imamo na prvem mestu podatek tipa niz (Srečo), na drugem mestu pa podatek tipa število (13). Na takšen način bi lahko shranili starosti svojih prijateljev
Ustvarjanje novega seznama
Preden lahko karkoli počenjamo s seznami, moramo seznam ustvariti.
Velikokrat nam pride prav, da začnemo s praznim seznamom. Torej moramo ustvariti seznam, kjer vsebina ne bo (še) določena.
V takšnem primeru pač ustvarimo seznam, ne da bi karkoli shranili vanj - ne napišemo ničesar med oglata oklepaja.
novSeznam = []
Ena možnosti pri ustvarjanju novega seznama je, da že na začetku povemo, kaj bo v seznamu.
Tak primer pravzaprav že poznamo
novSeznam = [13, 15, 10, 35]
Velikokrat nam pride zelo prav, da imamo že na začetku seznam znane dolžine. V njem je pravzaprav vseeno kakšne vrednosti so noter, saj jih bomo kasneje v programu nadomestili s pravimi vrednostmi.
novSeznam = [0] * 10
Na ta način bomo dobili seznam dolžine 10. V njem bodo shranjene same ničle
Torej dobimo: [0,0,0,0,0,0,0,0,0,0]
Osnovne opracije s seznami
Sezname lahko med seboj stikamo. To pomeni, da vzamemo dva seznama in ju "zlepimo" skupaj. Pri tem je treba paziti, da resnično stikamo dva seznama. Seznama ne moremo stikati s čemer koli drugim ko s seznamom.
novSeznam = seznam1 + seznam2
novSeznam = [3,1,6] + [5,3,8,9,42] Rezultat bo v tem primeru [3,1,6,5,3,8,9,42]
* OPOMBA: Seveda lahko stikamo sezname s katerimi koli tipi podatkov
Elemente na konec seznama najenostavneje dodamo s stikanjem seznama in novim elementom, ki ga predstavimo kot seznam.
seznam = seznam + [nov podatek]
Za vsak podatek se ve na katerem mestu v seznamu se nahaja, temu rečemo index.
Prvi podatek v seznamu ima index 0, naslednji 1. Tako ima na primer deveti podatek v seznamu index 8.
N-ti podatek v seznamu ima index n-1
Kako pa povemo, da bi želeli določen podatek pridobiti?
seznam[index]
Podatke v seznamu lahko spreminjamo. Pravzaprav lahko podatke le zamenjamo z novimi. Torej lahko nekemu mestu z indexom v seznamu priredimo novo vredost. Pri tem moramo vedeti, da je pri tem star podatek izgubljen.
seznam[index] = novaVrednost
Sezname lahko stikamo tudi takole:
sez1 = [3,2]
sez2 = [8,9]
novSeznam = sez1 + sez2
Rezultat: [3,2,8,9]
novSez = novSez + [42]
Rezultat: [3,2,8,9,42]
novSez = [3,2,8,9,42]
novSez[0] ima vrednost 3
novSez[2] ima vrednost 8
novSez = [3,2,8,9,42]
novSez[2] = 53
Rezultat: [3,2,53,9,42]
Zamenjali smo podatek z indexom 2.
Izpisovanje seznama
Sezname lahko tudi izpisujemo. Kot smo že navajeni od prej se tudi za izpisovanje seznama uporablja funkcija print. Če funkciji print damo za izpisat kar cel, bomo dobili vse podatke izpisane v oglatih oklepajih, ločene z vejicami, tako kot seznam izgleda.
print(seznam)
Če želimo izpisati samo en del seznama potem lahko to napravimo prav tako s funkcijo print. Pri tem moramo zelo paziti, saj moramo vedeti kakšnega tipa je podatek, ki ga izpisujemo. Pri tem moramo ravnati enko kot pri izpisovanju sprmenljivk.
Če želimo iz seznama izpisati niz:
print(seznam[index])
Če želimo iz seznama izpisati število:
print(str(seznam[index]))
>>>sez=['Jan',13,'Lev',15]
>>>print(sez)
['Jan', 13, 'Lev', 15]
>>>sez=['Jan',13,'Lev',15]
>>>print(sez[0])
Jan
>>>sez=['Jan',13,'Lev',15]
>>>print(sez[1])
!! NAPAKA !! Print ne zna izpisati števila, zato moramo število najprej pretvoriti v niz.
>>>sez=['Jan',13,'Lev',15]
>>>print(str(sez[1]))
13
Dolžina seznama
Zelo pogosto bomo potrebovali informacijo kako dolg seznam imamo. Dolžina seznama pomeni, koliko podatkov imamo shranjenih. Dolžina seznama [2,8,4,42] je 4. Dolžino seznama nam da, tako kot pri nizih, funkcija len, ki vrne število, ki pomeni koliko je elementov v seznamu.
len(seznam) Vrne dolžino seznama
>>>sez=['Jan',13,'Lev',15]
>>>print(len(sez))
!! NAPAKA !! Print ne zna izpisati števila, zato moramo število najprej pretvoriti v niz.
>>>sez=['Jan',13,'Lev',15]
>>>print(str(len(sez)))
4
Kviz 1. vprašanje
V seznamih imamo lahko naslednje tipe podatkov:
Res je, v seznamih lahko imamo načeloma mešane podatke.
Ne bo držalo. Pojdi nazaj in si ponovno preberi.
Kviz 2. vprašanje
Ali lahko sezname izpisujemo s funkcijo print()?
Res je sezname lahko izpisujemo s funkcijo print().
Ne bo držalo. Pojdi nazaj in si ponovno preberi.
Kviz 3. vprašanje
Zapiši stavek kako bi spremenljivki ucenec priredil tretjo vrednost iz seznama sez. Preveri
Odlično, lahko pričneš z reševanjem problemov.
Poizkusi še enkrat, zagotovo znaš.
Naloga - 1. korak
Pripravi seznam v katerega bo uporabnik zapisal 10 različnih imen prijateljev. Na koncu seznam tudi izpiši.
Naloga - 2. korak
Opomba: Znak minus (-) je tukaj uporabljen izključno zaradi zamikanja besedila v pythonu. V dejanski programski kodi teh minusov na začetku vrstice ne sme biti.
1. Najprej pripravimo seznam.
imena = []
2. Nato potrebujemo zanko while, pred tem moramo še definirati števec
i = 0
while i<10 :
# začasni spremenljivki trenutnoIme bomo priredili vrednost, ki jo bo uporabnik vpisal
--trenutnoIme = input("Vpiši ime prijatelja: ")
#sedaj zpišimo to vrednost v seznam, paziti je treba, da bo prikazana kot seznam, nato povečamo števec
--imena = imena + [trenutnoIme]
--i = i + 1
3. Sedaj imamo seznam in ga le še izpišemo
print(imena)
Naloga - 3. korak
Spodaj je prikazana programska koda za naš programček.
|
In še izvajanje.
|
Naloga - 4. korak
Sedaj imamo rešeno nalogo. Poizkusi jo rešiti še sam.
Reši nalogo ponovno tako, da že na začetku ustvariš seznam desetih praznih nizov in jih v zanki spreminjaš v prave vrednosti.
Razmisli, kako bi se dalo naš seznam izpisati, da bi imeli vsako ime v novi vrstici?
Kaj bi bilo potrebno spremeniti, da bi uporabniku povedali katero ime po vrsti vpisuje. Primer: Vpiši 6. prijatelja:?