21
OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 9 – KOLEKCIJE: SKUPOVI I REČNICI Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović

PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

OSNOVE PROGRAMIRANJA U PAJTONU

PREDAVANJE 9 – KOLEKCIJE: SKUPOVI I REČNICI

Miloš Kovačević

Đorđe Nedeljković

Marija Petronijević

Dušan Isailović

Page 2: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

SADRŽAJ PREDAVANJA

- Skupovi

- Mape (Rečnici)

- Kombinatorne strukture, modul itertools

Page 3: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

SKUPOVI I MAPE

Za razliku od sekvenci (tekst, liste, torke), skupovi i mape predstavljaju neuređene kolekcije.

Neuređenost implicira da ne postoje indeksi koji govore o redosledu ubacivanja.

Skupovi su kolekcije nepromenljivih objekata koji ne sadrže duplikate.

Predstavljaju apstrakciju skupova iz matematike.

Mape sadrže parove objekata (preslikavanja tipa ključ - vrednost).

Objektima vrednostima pristupa se navođenjem odgovarajućeg ključa.

Ključevi moraju biti nepromenljivi objekti. Vrednosti su proizvoljni objekti.

Page 4: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

SKUPOVI – TIP set

Poput ostalih kolekcija, skupovi se mogu praviti implicitno – korišćenjem {}, ili eksplicitno korišćenjem konstruktora set()

Page 5: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

SKUPOVI – TIP set

Liste su promenljivi objektipa ne mogu biti elementiskupa

Prazan skup pravi se pomoću konstruktora

Page 6: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

SKUPOVNE OPERACIJE

Page 7: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

MAPE U PAJTONU: REČNICI – TIP dict

Rečnici sadrže parove objekata (preslikavanja tipa ključ - vrednost).

Objektima vrednostima pristupa se navođenjem odgovarajućeg ključa.

Page 8: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

REČNICI – TIP dict

Uočiti neuređenuprirodu rečnika

Prazan rečnik pravi se pomoću {}. Uporediti sa skupovima – prazan skup pravi se sa set()

ključ vrednost

Page 9: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

UBACIVANJE NOVIH VREDNOSTI U REČNIK

Prilikom ubacivanja, između uglastih zagrada navodi se ključ koji odgovara vrednost koja se ubacuje:

Ako zadati ključ već postoji, onda se dotično preslikavanje ažurira novom vrednošću!

Page 10: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

ČITANJE VREDNOSTI IZ REČNIKA

da li je ključ u rečniku?

za čitanje se savetuje metoda get()koja vraća None ako ključ nije u rečniku

Ako nema traženog preslikavanja, vraća drugi (opcioni) parametar.

ključ za koji se traži vrednost.

Page 11: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

BRISANJE IZ REČNIKA

del briše samo ako postoji ključ

metod pop briše i vraćavrednost iz rečnika

ako se navede, opcioni argument se vraća ako ključ ne postoji

metod clear() briše sve!

Page 12: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

PROLAZAK KROZ REČNIK

Page 13: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

Svi pogoci za datog strelca – grupisanje :rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova

Koliko je puta pogođen svaki krug – prebrojavanje (računanje frekvencija)rečnik čiji je ključ broj kruga a vrednost frekvencija pogađanja

Kako pogoci stižu u realnom vremenu, podaci se obrađuju u petlji while, sve dok korisnik ne unese prazno ime – kraj takmičenja.

Page 14: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

STRELCI – GRUPISANJE I PREBROJAVANJE

Page 15: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

KOMBINATORNE STRUKTURE

U programiranju se često bira k od n objekata iz zadate kolekcije, na sve moguće načine – kombinacije bez ponavljanja (npr. u metodi grube sile).

Ako se potencijalna rešenja predstavljaju kao sekvence objekata, potrebno je generisati sve moguće rasporede – permutacije, ili izabrati određeni broj objekata na k pozicija – varijacije.

Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije, koriste se funkcije iz modula itertools.

Za generisanje kombinacija bez ponavljanja, ako se ne koristi itertools,mogu se koristiti ugnježđene petlje – videti obavezno problem 5.9 u knjizi !

Page 16: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

MODUL ITERTOOLS

vraća objekat iterator.

vraća objekat iterator.

Page 17: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

OBJEKAT ITERATOR

Funkcija combinations() vraća objekat iterator. Iterator na eksplicitan zahtev (u for petlji) vraća elemente jedan po jedan (kombinacije u obliku torki).

Iterator ne sadrži celu sekvencu već generiše sledeći objekat na osnovu tekućeg objekta i pravila za generisanje sledećeg objekta – štednja memorije.

Sa iteratorima smo se već sreli – objekat tipa range

Ako se žele svi objekti odjednom – iterator se prosledi konstruktoru torke ili liste:

Page 18: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

Treba generisati sve trojke stranica iz liste stranica – stranice kandidati,kombinacije bez ponavljanja treće klase!

Tri kandidatne stranice a, b i c čine trougao ako važe sledeće nejednakosti (domensko znanje):

Površina trougla zadatog stranicama računa se preko Heronovog obrasca (domensko znanje):

Page 19: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

TROUGLOVI

Iterator za generisanje kombinacija treće klase iz liste stranice

Dekompozicija na 3 fje olakšava rešavanje

Page 20: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

TROUGLOVI – TEST PROGRAM

Funkcija combinations() u svakoj iteraciji proizvodi po jednu tročlanu torku sa dužinama stranica.

Page 21: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje

PERMUTACIJE, VARIJACIJE