Povratak na liste - ★★ Fog Developer ★★

Novo

6/recent/ticker-posts

Povratak na liste

11.1.2 Povratak na liste

Sada kada znamo nešto malo teorije o objektima, postaje jasno da smo, kreirajući neku listu, mi u stvari kreirali objekat klase list, koji je u suštini, sastavljen od drugih objekata neke druge (ili čak i iste) vrste (klase). Ali, po čemu je ovaj novi objekat, lista, karakteristična? Šta mi to možemo sa njom, a da ne možemo sa pojedinačnim objektima od kojih je ona sastavljena?
Hajde da pređemo na neki primer, pa će nam stvari biti valjda malo jasnije.
Ja ću kreirati jednu listu, koju ću smestiti u promenljivu, koju ću nazvati spisak. Promenljiva spisak će biti šoping lista koja će da mi služi kada krenem u prodavnicu, jer me sa godinama sve više hvata Alchajmerova bolest. U promenljivoj spisak ja ću da čuvam niz imena proizvoda, ali nikada nemoj zaboraviti da u nju možemo dodati bilo kakav objekat, uključujući brojeve, pa čak i druge liste.
>>> spisak = ['hleb od preključe', 'jeftino mleko sa alfatoksinom', 'ozračen krompir iz njive komšije Milenka', 'organska genetski modifikovana jaja od nove sorte kokoške-noja'] 
>>> 
Da proverimo, koliko stavki imam da kupim, kako bih poneo dovoljno veliku torbu. To ću uraditi pomoću len() funkcije.
>>> len(spisak) 
4 
>>> 
Pošto mi je ovako napisan spisak prilično nepregledan, hajde da ga prikažem malko lepše. Heh, sada znam da ću koristili for petlju jer ona, kao što sam ranije video, prelazi kroz sve stavke u listi. To mi je omogućeno zato što je lista sekvenca. O karakteristikama sekvenci ću ti govoriti u kasnijem delu ovog tutorijala. 
>>> for i in spisak: 
...     print(i) 
... 
hleb od preključe 
jeftino mleko sa alfatoksinom 
ozračen krompir iz njive komšije Milenka 
organska genetski modifikovana jaja od nove sorte kokoške-noja 
>>> 
Uf... Kada bih se ovako hranio, brzo bih završio u.... Čoveku treba valjda i neki dezert, da se osladi dok se zdravo hrani. Znači moj spisak nije potpun, treba da mu dodam neku novu stavku. To postižem koristeći append metodu, kao što sam ti već opisao ranije. No, budući da sam i zaboravan, bilo bi dobro proveriti da li je ta stavka zaista i dodana u moju listu, što ću postići na isti način kao i malo pre:
>>> spisak.append('jetrena pašteta sa ukusom čokolade od jagode') 
>>> for i in spisak: 
...     print(i) 
... 
hleb od preključe 
jeftino mleko sa alfatoksinom 
ozračen krompir iz njive komšije Milenka 
organska genetski modifikovana jaja od nove sorte kokoške-noja 
jetrena pašteta sa ukusom čokolade od jagode 
>>> 
Eh, sada... Ja volim da idem u prodavnice zdrave hrane koje, kao što je poznato, drže neki newage hipiji koji pucaju od zdravlja i sijaju sa jarko-zelenom svetlošću tokom mraka. Pošto su ultra-zdravi, nemaju preterano mnogo problema u svom životu, pa se bave mnogo važnijim problemima koji se tiču celog čovečanstva i pokušavaju da svima učine život lepšim, lakšim i prijatnijim. Zato oni, da im se mušterije ne bi mnogo mučile, ređaju robu u svojim prodavnicama abecednim redosledom. Ovo je super! Ako je i moj spisak poređan na taj način, uštedeću par sekundi u toku kupovine! U suprotnom ću izgubiti jedno pola sata. Znači, sada mi je preko potrebno da na neki način sortiram svoj spisak. Aha ja ću sortirati svoju listu pomoću sort metode.
>>> spisak.sort() 
>>> for i in spisak: 
...     print(i) 
... 
hleb od preključe 
jeftino mleko sa alfatoksinom 
jetrena pašteta sa ukusom čokolade od jagode 
organska genetski modifikovana jaja od nove sorte kokoške-noja 
ozračen krompir iz njive komšije Milenka 
>>> 
Ono što je važno da se u ovom trenutku shvati je da većina ovih metoda koje koristimo, utiče direktno na samu listu, tj mi ne dobijamo neku drugu modifikovanu listu - već našu listu zaista i menjamo! To je bitna razlika od našeg načina rada sa stringovima, koji su nepromenljivi. To jest liste su promenljiv tip podataka, a stringovi su nepromenljiv.
U redu, sada sam stigao u prodavnicu. Ono što želim da postignem je to da kada kupim neki proizvod iz liste, želim da je uklonim iz spiska. To ću postići pomoću naredbe del koju smo već upoznali. Ali, bilo bi dobro da mi tu stavku stavimo u neku kesu, jer kako ćemo je doneti do kuće?
Znači, kesa mora biti neka nova lista, hajde da vidimo kako će to da izgleda:
>>> kesa = [] 
Pošto su u prodavnici stavke poređane određenim redosledom mi kupujemo prvu stavku iz liste koristeći oznaku stavkedel spisak[0] (sećaš se da sam ti pričao da Python počinje brojanje od 0, tako da je naša prva stavka iz liste spisak[0]):
>>> kupujem = spisak[0] 
>>> del spisak[0] 
>>> kupujem 
'hleb od preključe' 
>>> kesa.append(kupujem) 
>>> spisak 
['jeftino mleko sa alfatoksinom', 'jetrena pašteta sa ukusom čokolade od jagode', 'organska genetski modifikovana jaja od nove sorte kokoške-noja', 'ozračen krompir iz njive komšije Milenka'] 
>>> kesa 
['hleb od preključe'] 
>>> 
Jednostavno, kupili smo nešto, ubacili u kesu i izbrisali sa spiska. Huh, ali šta je sad ovo? U prodavnicu su zaposlili jednu mladu i neiskusnu prodavačicu koja ima neku „fiks ideju“ da ređa proizvode tako što su oni što se više prodaju bliže kasi, dok oni koji su manje traženi, i koji treba da budu vraćeni dobavljačima, se nalaze dalje od kase (ona kaže da će tako pospešiti prodaju i zadovoljstvo mušterija, ali nema pojma... Jer njihove mušterije su i ovako i onako izgubljeni u vremenu i prostoru).
Meni ne smeta, sada mogu da kupujem kako mi drago:
>>> kupujem = spisak[2] 
>>> kesa.append(kupujem) 
>>> del spisak[2] 
>>> kupujem = spisak[1] 
>>> kesa.append(kupujem) 
>>> del spisak[1] 
>>> spisak 
['jeftino mleko sa alfatoksinom', 'ozračen krompir iz njive komšije Milenka'] 
>>> kesa 
['hleb od preključe', 'organska genetski modifikovana jaja od nove sorte kokoške-noja', 'jetrena pašteta sa ukusom čokolade od jagode'] 
>>> 
Super-lako! Zar ne?
Ako želiš da saznaš sve metode koje možeš koristiti, a koji su ti dostupni kada definišeš neki objekat iz klase list, pogledaj malo help(list). Takođe, za domaći, pokušaj da napraviš program koji će pomagati korisniku pri planiranju kupovine.
11.1.1 Predstavljanje
objekata i klasa
Indeks 11.2 Tuple

Постави коментар

0 Коментари