Skup čuva jedinstvene vrednosti kada je pripadnost važnija od pozicije.
Već znate da liste mogu da rastu i menjaju se, a torke čuvaju fiksne povezane vrednosti zajedno. Skup rešava drugačiji problem: svaku vrednost čuva samo jednom. Koristite skup kada duplikati treba da nestanu ili kada je korisno pitanje „Da li je ova vrednost ovde?“, a ne „Koja je vrednost na poziciji 0?“
tags = ["python", "django", "python", "ai"]
unique_tags = set(tags)
print(unique_tags)
print(len(unique_tags))Lista može sadržati istu vrednost više puta. set(tags) čuva samo jedinstvene vrednosti, zato ovaj skup ima tri elementa: "python", "django" i "ai". Ne oslanjajte se na prikazani redosled skupa; važno je da duplikati nestaju.
Literal skupa koristi vitičaste zagrade: skills = {"python", "django", "ai"}. Ako dvaput napišete "python", i dalje nastaje samo jedan element "python". len(skills) broji elemente koji zaista ostanu nakon uklanjanja duplikata.
Ne birajte skup kada su važne pozicije: Lista ili torka su obično bolji izbor kada su redosled ili pozicija važni. Ne koristite skills[0] sa skupom i ne pišite logiku programa koja zavisi od toga koji se element prvi prikaže ili obiđe u skupu.
skills = {"python", "django", "ai"}
print("django" in skills)
print("java" in skills)value in set daje Boolean rezultat. Ovde je "django" in skills True, dok je "java" in skills False. To povezuje skupove sa vrednostima bool, operatorima i uslovima koje već znate.
skills = {"python", "django", "ai"}
skills.add("data")
skills.add("python")
skills.discard("django")
print(skills)add() dodaje jednu vrednost. Dodavanje vrednosti koja već postoji ne pravi duplikat. discard() uklanja vrednost kada postoji i ne stvara problem kada je nema.
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)
print(a & b)
print(a - b)a | b je unija: sve jedinstvene vrednosti koje se pojavljuju u bar jednom skupu, {1, 2, 3, 4, 5}. a & b je presek: vrednosti zajedničke za oba skupa, {3}. a - b je razlika: vrednosti koje su u a, ali nisu u b, {1, 2}.
empty_set = set()
empty_dictionary = {}{} nije prazan skup u Pythonu; on pravi prazan rečnik. Koristite set() kada vam je potreban prazan skup. Rečnici imaju posebnu lekciju kasnije.
skills = {"python", "django", "python"}
skills.add("ai")
skills.add("python")
print(len(skills))
print("django" in skills)Zastanite pre pokretanja. Duplikat "python" ne pravi još jedan element. "ai" se dodaje, a ponovno dodavanje "python" ne menja ništa. Konačni skup ima tri jedinstvena elementa, zato je len(skills) 3; provera pripadnosti za "django" je True.
Izaberite kolekciju prema onome što je važno
- Izaberite skup za jedinstvenost i pripadnostKoristite skup za jedinstvene posetioce, oznake, dozvole, izabrane kategorije ili zajednička interesovanja kada duplikati treba da nestanu.
- Izaberite listu kada je redosled važanKoristite listu kada su važni redosled ili pozicija, kada duplikati mogu biti važni ili kada se elementi menjaju redom.
- Izaberite torku za fiksnu povezanu grupuKoristite torku kada fiksne povezane vrednosti pripadaju zajedno i njihove pozicije imaju značenje.
Česte početničke greške
- Očekivanje da duplikati ostanu
{"python", "python"}ne predstavlja dve odvojene vrednosti"python"; skup je čuva samo jednom. - Pokušaj indeksiranja skupa
skills[0]ne radi zato što skup, za razliku od liste ili torke, ne omogućava indeksiranje po poziciji. - Tumačenje {} kao praznog skupa
empty = {}pravi rečnik. Za prazan skup koristiteempty = set(). - Oslanjanje na redosled skupaNe dozvolite da logika programa zavisi od toga koji se element skupa prvi prikaže ili obiđe. Koristite listu ili torku kada je taj redosled deo značenja.
