Python set jedinstveni je literal za filtriranje različitih vrijednosti na popisu ili nizu stavki. Za razliku od Python popisa, rječnika ili nabora, on ne prihvaća duplikate. Dakle, to može biti vrijedan alat za čišćenje podataka.
Ali kako možete stvoriti skup i koristiti ga u Pythonu? Objasnit ćemo to u ovom postu.
Značajke Python skupova
Osim što ne prihvaća duplikate, set literala ima i druge karakteristike koje ga razlikuju od ostalih tipova podataka. Evo nekih njegovih značajki:
- Nepromjenjiv je: to znači da ne možete mijenjati vrijednosti skupa nakon što ga stvorite.
- Set literala vraća dinamički raspored svaki put kad ga stvorite. U osnovi, predmeti u setu nisu uređeni.
- Budući da predstavlja neuređene stavke, za razliku od popisa slovnika i literatura, vrijednosti skupa ne možete dobiti prema njihovim indeksima.
Kako stvoriti i koristiti Python set
Sad kad znate osnovne značajke Python seta. Pogledajmo neke od načina na koje ga možete koristiti u svom programu.
Koristite kovrčave zagrade za izradu skupa u Pythonu. Dakle, skup je popis predmeta u kovrčavim zagradama odvojenih zarezima:
mySet = {1, 2, "MUO", "Google"}
ispis (mySet)
Izlaz: {1, 2, "MUO", "Google"}
Također možete pretvoriti bilo koju drugu vrstu podataka u skup. Na primjer, donji kod pretvara popis u skup:
myList = [1, 2, "MUO", "Google"]
mySet = set (myList)
ispis (mySet)
Izlaz: {1, 2, "MUO", "Google"}
Da biste bili sigurni, možete provjeriti vrstu podataka mySet:
myList = [1, 2, "MUO", "Google"]
mySet = set (myList)
ispis (upišite (mySet))
Izlaz:
Kao što smo ranije spomenuli, set ne prihvaća duplikate. Ta značajka može biti korisna kada želite očistiti niz uklanjanjem dvostrukih vrijednosti.
Kôd u nastavku uklanja duplikate s popisa i prikazuje izlaz kao Python skup:
myList = [1, 2, 2 "MUO", "MUO", "Google", "Google"]
mySet = set (myList)
ispis (mySet)
Izlaz: {1, 2, 'MUO', 'Google'}
Da bi se dodatno demonstrirala značajka filtriranja skupa, kada ispisujete duljinu skupa, ne računa se dvostruke vrijednosti:
mySet = {1, 2, 2, "MUO", "MUO", "Google", "Google"}
ispis (len (mySet))
Izlaz: 4
Da bismo vidjeli bolji slučaj upotrebe skupa, uklonimo duplikate u sljedećem nizu. To je poput upita o jedinstvenim ključevima u nizu.
Da biste to učinili, pretvorite rječnik u skup:
myDiction = {
"Mango": 2, "Naranča": 2, "mrkva": 2, "MUO": "tehnologija",
"MUO": "web", "Google": "pretraga", "Google": "motor"
}
uniqueSet = set (myDiction)
print ("Ovo su jedinstveni ključevi: {}". format (uniqueSet))
Izlaz: Ovo su jedinstveni ključevi: {'Google', 'Mango', 'MUO', 'Orange', 'mrkva'}
Gornja pretvorba automatski uklanja duplicirane stavke iz niza.
Možete izmijeniti gornji kod pomoću for petlje kako bi bilo jasnije:
za jedinstvene elemente u uniqueSet:
tisak (unikat)
Također možete pridružiti dva seta pomoću unija() metoda:
setA = {1, 3, 5}
setB = {1, 4, 6}
newSet = setA.union (setB)
ispis (newSet)
Izlaz: {1, 3, 4, 5, 6}
Međutim, gornji kod spaja dva skupa i uklanja dvostruke vrijednosti.
Možete koristiti i cijev | funkcija za spajanje skupova u Pythonu:
setA = {1, 3, 5}
setB = {1, 4, 6}
newSet = setA | setB
ispis (newSet)
Izlaz: {1, 3, 4, 5, 6}
Također možete pronaći razliku između dva skupa u Pythonu:
setA = {1, 3, 5}
setB = {2, 4, 5,}
ispis (setA.difference (setB))
Izlaz: {1, 3}
Možete pronaći simetričnu razliku između skupova A i B. Ova metoda vraća stavke u bilo kojem skupu, ali isključuje njihova presijecanja. Pogledajmo kako ovo funkcionira:
setA = {1, 3, 5}
setB = {2, 4, 5,}
ispis (setA ^ setB)
Izlaz: {1, 2, 3, 4}
Možete koristiti i simetrična_razlika () metoda:
setA = {1, 3, 5}
setB = {2, 4, 5,}
ispis (setA.symmetric_difference (setB))
Izlaz: {1, 2, 3, 4}
Pogledajmo i kako možete pronaći presjek skupova u nastavku:
setA = {1, 3, 5}
setB = {1, 4, 6}
setC = {1, 5, 4}
newSet = setA.intersection (setB, setC)
ispis (newSet)
Izlaz: {1}
Dok možeš dodati na popis u Pythonu, ne možete učiniti istu stvar za Python set. Međutim, možete dodati stavku na kraj niza pomoću dodati funkcija.
Ali Python dodati funkcija prihvaća jedan argument, tako da skupu možete dodati samo korpicu. Ovo vraća ugniježđeni skup:
setA = {1, 3, 5} setC = {1, 3}
newSet = 1, 6
setC.add (newSet)
ispis (setC)
Izlaz: {1, (1, 6), 3}
Python set koristi isdisjoint () metoda za provjeru jesu li dva skupa razdvojena. Zatim vraća logičku vrijednost:
setA = {1, 3, 5}
setB = {1, 4, 6}
findDisjoint = setA.isdisjoint (setB)
print ("{{je {set da je setA presjek od B" .format (findDisjoint))
Rezultat: Lažno je da je setA presjek od B
Zamijenite da biste provjerili je li skup podskup drugog isdisjoint () s issubset ():
findSubset = setA.issubset (setB)
Možete ukloniti element iz skupa:
setA = {1, 3, 5}
setA.remove (5)
ispis (setA)
Izlaz: {1, 3}
The čisto() metoda briše elemente u skupu i vraća prazan skup:
setA = {1, 3, 5}
setA.clear ()
ispis (setA)
Izlaz: set ()
Iz skupa možete ukloniti proizvoljnu stavku i vratiti joj vrijednost pomoću set.pop () metoda:
setA = {1, 3, 5}
ispis (setA.pop ())
Također možete ažurirati Python set metodom update ():
setA = {1, 'b'}
setB = {2, 4, 5,}
ispis (setA.update (setB))
ispis (setA)
Izlaz: {1, 2, 4, 5, 'b'}
Poigrajte se s Python setovima
Iako smo vidjeli kako možete koristiti skup u Pythonu, još uvijek postoje drugi praktični načini primjene u vašem kodu. Kao što ste vidjeli, može vam dobro doći tijekom čišćenja podataka s Pythonom.
Pored skupa, druge vrste podataka ili nizovi Python imaju mnogo primjena i raznih aplikacija. Pokušajte se poigrati s njima kako biste se bolje vješali.
Nizovi i popisi neke su od najkorisnijih struktura podataka u programiranju - iako ih malo ljudi koristi u punom potencijalu.
Pročitajte Dalje
- Programiranje
- Piton

Idowu je zaljubljen u sve pametne tehnologije i produktivnost. U slobodno vrijeme igra se s kodiranjem i prebacuje se na šahovsku ploču kad mu je dosadno, ali također voli kad-tad odvojiti se od rutine. Njegova strast da ljudima pokaže put oko moderne tehnologije motivira ga da piše više.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.