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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

SADRŽAJ PREDAVANJA

- Skupovi

- Mape (Rečnici)

- Kombinatorne strukture, modul itertools

Page 3: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

SKUPOVNE OPERACIJE

Page 7: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

Č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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

PROLAZAK KROZ REČNIK

Page 13: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

STRELCI – GRUPISANJE I PREBROJAVANJE

Page 15: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

MODUL ITERTOOLS

vraća objekat iterator.

vraća objekat iterator.

Page 17: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

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 · ili izabrati određeni broj objekata na kpozicija –varijacije . Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije,

PERMUTACIJE, VARIJACIJE