PYTHON - Uvod v sezname

PYTHON - Uvod v sezname

Avtor: Saša Kožuh

Učni cilji: Kreiranje seznamov, stikanje seznamov, polnjenje seznamov, pridobivanje podatkov iz seznamov

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]

Zgled


Spremenljivka

starost = 13

Seznam

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', ...]

Zgled


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.

Ustvarjanje praznega seznama

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 = []

Ustvarjanje polnega seznama

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]

Ustvarjanje polnega seznama z nadomestnimi vrednostmi

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


Stikanje seznamov

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

Dodajanje elementa na konec seznama

Elemente na konec seznama najenostavneje dodamo s stikanjem seznama in novim elementom, ki ga predstavimo kot seznam.

seznam = seznam + [nov podatek]

Pridobivanje določenega podatka iz seznama

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]

Spreminjanje podatkov v seznamu

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:

le števila
le nize
le logične vrednosti
podatki so lahko mešani

Pravilno

Res je, v seznamih lahko imamo načeloma mešane podatke.

Napačno

Ne bo držalo. Pojdi nazaj in si ponovno preberi.

Kviz 2. vprašanje

Ali lahko sezname izpisujemo s funkcijo print()?

NE
DA

Pravilno

Res je sezname lahko izpisujemo s funkcijo print().

Napačno

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

Pravilno

Odlično, lahko pričneš z reševanjem problemov.

Napačno

Poizkusi še enkrat, zagotovo znaš.

Naloga - 1. korak

Besedilo naloge

Pripravi seznam v katerega bo uporabnik zapisal 10 različnih imen prijateljev. Na koncu seznam tudi izpiši.

Ideja reševanja

  1. Najprej pripravim nov seznam. Lahko ta seznam pripravim z desetimi vrednostmi ali pa ga pustim praznega in ga potem polnim.
  2. Najbolje bo, da vnos napravimo z zanko While. Pri tem bo treba definirati števec in ga ob izvajanju povečevati. Zanka naj se izvaja deset krat. V zanki bomo prebrali niz in ga zapisali v seznam.
  3. Po končanem poljnjenju seznama, seznam le še izpišemo s funkcijo print().

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.

(program1.jpg)
Programska koda

In še izvajanje.

(program1-i.jpg)
Izvajanje programa

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:?

0%
0%