Izaberi kolekciju prema ponašanju koje tvoji podaci zahtevaju.
Više Python kolekcija ponekad može da čuva iste vrednosti. Najbolji izbor je onaj koji jasno pokazuje nameru programa: da li su ti potrebni redosled, izmene, jedinstvenost ili pronalaženje po smislenom imenu?
PROBLEM / NAMERA
↓
KOJE PONAŠANJE PODACI ZAHTEVAJU?
↓
IZABERI KOLEKCIJUIzbor kolekcije izražava nameru. coordinates = (45.26, 19.83) tehnički može biti lista, ali torka čitaocu govori da je to jedna fiksna, povezana grupa čije pozicije imaju značenje.
tags = {"python", "django", "python"} govori da su jedinstvenost i pripadnost važniji od pozicije. student = {"name": "Ana", "city": "Novi Sad"} govori da se vrednosti pronalaze preko smislenih ključeva, a ne preko magičnih pozicija.
Korisno pravilo: Dobar izbor kolekcije olakšava razumevanje modela podataka. Ispravan Python nije uvek i najsmisleniji prikaz podataka.
user = ["Ana", 22, "Novi Sad"]
user_profile = {
"name": "Ana",
"age": 22,
"city": "Novi Sad",
}Obe vrednosti su ispravan Python. Rečnik je obično jasniji za profil korisnika jer svaka vrednost ima smislenu oznaku umesto pozicije koju moraš da pamtiš.
Trebaju li ti smisleni ključevi? → dictionary
Trebaju li ti jedinstvenost ili pripadnost? → set
Treba li ti fiksna povezana grupa? → tuple
Trebaju li ti uređene vrednosti koje se menjaju? → listOvo je okvir za odluku prilagođen početnicima, a ne pravilo za svaki mogući program. Pomaže ti da pre izbora sintakse imenuješ ponašanje koje je najvažnije.
recipe_steps = ["Prepare dough", "Add sauce", "Bake"]
coordinates = (45.26, 19.83)
skills = {"python", "django", "sql"}
profile = {"name": "Ana", "email": "ana@example.com", "city": "Novi Sad"}Koraci recepta su uređeni i mogu da se menjaju, zato koristi listu. Koordinate su fiksan povezani par, zato koristi torku. Veštine zahtevaju jedinstvenost i proveru pripadnosti, zato koristi skup. Profil koristi imenovana polja, zato koristi rečnik.
participants = ["Ana", "Marko", "Ana", "Jelena"]
unique_participants = set(participants)Lista čuva svaku prijavu redom i može da sadrži duplikate. Skup čuva samo jedinstvena imena. Time se menja prikaz podataka jer program sada vodi računa o jedinstvenosti, a ne o pristupu po poziciji ili redosledu prikaza.
visitors = ["Ana", "Marko", "Ana"]
unique_visitors = set(visitors)Podaci ne moraju zauvek ostati u istoj vrsti kolekcije. Izaberi prikaz koji odgovara zadatku koji sada radiš; ovde drugi zadatak zahteva jedinstvene posetioce.
Praktična heuristika za odluku
- Trebaju li ti smislene oznake?Izaberi rečnik za odnose ključ → vrednost, kao što je profil korisnika.
- Trebaju li ti jedinstvenost ili pripadnost?Izaberi skup kada duplirane vrednosti nisu korisne i kada je važno pitanje „da li je ovo prisutno?“.
- Treba li ti fiksna povezana grupa?Izaberi torku za uređene vrednosti koje pripadaju zajedno i tretiraju se kao fiksne.
- Trebaju li ti uređene vrednosti koje mogu da se menjaju?Izaberi listu kada je redosled važan i kada kolekcija treba da raste, smanjuje se ili se ažurira.
Česte početničke greške
- Korišćenje skupa kada je pozicija važnaSkup služi za jedinstvenost i pripadnost, a ne za stabilan pristup po poziciji ili uređeni prikaz.
- Korišćenje magičnih pozicija liste za imenovana poljaLista kao što su
user[0],user[1]iuser[2]skriva značenje. Koristi rečnik kada vrednosti prirodno imaju imena. - Očekivanje da se torka menjaTorka predstavlja fiksnu povezanu grupu; izaberi listu kada treba da zameniš, dodaš ili ukloniš stavke.
- Očekivanje da skup čuva duplikateSkup čuva jedinstvene vrednosti. Koristi listu kada su ponovljene vrednosti važne za zadatak.
- Korišćenje rečnika kada su dovoljne jednostavne uređene vrednostiRečnik dodaje oznake i pronalaženje po ključu. Koristi listu ili torku kada su vrednosti jednostavno uređeni niz.
- Biranje samo sintakse koju već znašNemoj uvek koristiti listu samo zato što ti je poznata. Pođi od problema i izaberi ponašanje koje tvoji podaci zahtevaju.
