liste u pythonu za - hdpio.hr u pythonu za pocetnike i napredne_nikola...liste u pythonu za...

15
Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb [email protected] Računalo u školi XVIII. Šibenik – Solaris, 29. rujan 2014.

Upload: others

Post on 20-Jan-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste u Pythonu za početnike i napredne

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Računalo u školi XVIII.Šibenik – Solaris, 29. rujan 2014.

Page 2: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste - općenito

• lista je složeni tip podataka

• L = [2, 4, 6, 7, 1] (deklaracija, tip..?)

• L = [3, 5, ‘a’, ‘hdpio’, 3.14]

• izravan pristup pojedinačnim elementima u listi

• L[0]; L[2]; L[:]; L[::]; L[-1]; L[::-1]

• konkateniranje i repliciranje

• L + [7, 2]

• 2 * L

• len(L)

• del(L[2])

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 3: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste – različiti načini kreiranja

• L = []

• L[0] = int(input()) ?

Primjer:

Nakon testa iz informatike, Ivicu zanima je li

ocjena koju je on dobio niža ili viša od prosjeka

dobivenih ocjena svih učenika?

I način: (min sintaksa)

L = 6 * [0]

L[1] = 2; L[0] = 3; L[5] = 4;

L[3] = 5; L[2] = 4; L[4] = 1;

0 00 0 00

3 52 4 41

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 4: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste – različiti načini kreiranja

II način:

L = N * [0]

for i in range(N):

L[i] = int(input())

III način:

L = []

for i in range(N):

x = int(input())

L = L + [x]

3 52 4 41

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

L = L + [int(input())]

L += [int(input())]

Page 5: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste – različiti načini kreiranja

IV način:

L = []

for i in range(N):

L.append(int(input())) # metoda append

Pitanje:

Kako kreirati kopiju postojeće liste?

kopija = L

kopija = L[:]

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 6: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

423211

Motivacijski zadatak

1 2 4 653 Ivica je trenutno:

-

1. korak: čekamo Ivicu

2. korak: kada prođe Ivica, zapišemo koji je trenutno

3. korak: za svakog sljedećeg skijaša koji prođe pitamo se:

1. ako je bolji od Ivice, Ivicu pomaknemo za jedno mjesto

niže

2. ako nije bolji od Ivice, slavimo

233

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 7: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

N = int(input())

voznja = []

for i in range(N):

voznja = voznja + [int(input())]

X = int(input())

for i in range(N):

if i + 1 == X:

ivica = voznja[i]

if i + 1 > X:

if voznja[i] <= ivica:

ivica = ivica + 1

print(ivica)

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Motivacijski zadatak

Page 8: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

N = int(input())

voznja = []

for i in range(N):

voznja.append(int(input()))

X = int(input())

ivica = voznja[X - 1]

for i in range(X, N):

if voznja[i] <= ivica:

ivica += 1

print(ivica)

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Motivacijski zadatak

Page 9: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste – metode

Metode – učiti ih kada za to dođe vrijeme

lista.append (objekt) - dodaje zadani objekt na kraj liste

lista.count (objekt) - vraća broj pojavljivanja zadanoga objekta

u listi

lista.index (objekt) - vraća prvi indeks na kojemu se pojavljuje

zadani objekt u listi

lista.insert (i, objekt) - dodaje objekt u listu na zadanu

poziciju i

lista.pop (i)- vraća objekt na i-toj poziciji u listi ili objekt

na zadnjoj poziciji ako indeks nije naveden i briše taj objekt iz

liste

lista.remove (objekt) - briše prvi objekt iz liste koji je

jednak zadanomu objektu

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 10: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Liste – metode

Primjer:

U listi brojeva odredi najveći broj strogo manji od maksimalne

vrijednosti. Ako nema takve vrijednosti ispiši -1.

Rješenje:

M = max(L)

while L.count(M) > 0:

L.remove(M)

if len(L) != 0:

print(max(L))

else:

print(-1)

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 11: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Lista kao stog

Stog (Stack) je lista koja omogućuje dodavanje i izbacivanje

elemenata pri čemu poštuje LIFO pravilo, tj. Last-in, First-

out.

>>> stog = ['a', 'b', 'c', 'd']

>>> stog.append('e')

>>> stog.append('f')

>>> stog

['a', 'b', 'c', 'd', 'e', 'f']

>>> stog.pop()

'f'

>>> stog

['a', 'b', 'c', 'd', 'e']

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 12: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Lista kao red

Red (Queue) je lista koja omogućuje dodavanje i izbacivanje

elemenata pri čemu poštuje FIFO pravilo, tj. First-in,

First-out.

>>> red = ['a', 'b', 'c', 'd']

>>> red.append('e')

>>> red.append('f')

>>> red

['a', 'b', 'c', 'd', 'e', 'f']

>>> red.pop(0)

'a'

>>> red

['b', 'c', 'd', 'e', 'f']

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 13: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Lista listâ

>>> a = [ [1, 2, 3], [4, 5, 6] ]

>>> a[1][0]

4

for i in L:

for j in i:

print(j, end = ' ')

print()

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 14: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Malo lista u klasama..

class moja_lista( list ):

def umnozak( self ):

ret = 1

for i in self:

ret *= i

return ret

a = moja_lista([1, 2, 3])

# a = [1, 2, 3]

print(sum(a))

print (a.umnozak())

a.append(4)

print (a.umnozak())

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]

Page 15: Liste u Pythonu za - hdpio.hr u Pythonu za pocetnike i napredne_NIkola...Liste u Pythonu za početnike i napredne Nikola Dmitrović, XV. gimnazija, Zagreb ndmitrovic@mioc.hr Računalo

Pitanja..

Hvala na pozornosti!

Sada nastavljamo dalje s još

naprednijom uporabom lista..

Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]