predavanje 9–kolekcije:skupovi i reČnici · 2018-04-16 · rečnik čiji je ključ ime a...

Post on 18-Feb-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OSNOVE PROGRAMIRANJA U PAJTONU

PREDAVANJE 9 – KOLEKCIJE: SKUPOVI I REČNICI

Miloš Kovačević

Đorđe Nedeljković

Marija Petronijević

Dušan Isailović

SADRŽAJ PREDAVANJA

- Skupovi

- Mape (Rečnici)

- Kombinatorne strukture, modul itertools

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.

SKUPOVI – TIP set

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

SKUPOVI – TIP set

Liste su promenljivi objektipa ne mogu biti elementiskupa

Prazan skup pravi se pomoću konstruktora

SKUPOVNE OPERACIJE

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.

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

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!

Č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.

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!

PROLAZAK KROZ REČNIK

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.

STRELCI – GRUPISANJE I 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 !

MODUL ITERTOOLS

vraća objekat iterator.

vraća objekat iterator.

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:

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):

TROUGLOVI

Iterator za generisanje kombinacija treće klase iz liste stranice

Dekompozicija na 3 fje olakšava rešavanje

TROUGLOVI – TEST PROGRAM

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

PERMUTACIJE, VARIJACIJE

top related