Upload
others
View
17
Download
0
Embed Size (px)
Citation preview
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.
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]
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]
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())]
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]
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]
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
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
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]
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]
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]
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]
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]
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]
Pitanja..
Hvala na pozornosti!
Sada nastavljamo dalje s još
naprednijom uporabom lista..
Nikola Dmitrović, XV. gimnazija, Zagreb [email protected]