Python set (s primjerima)

U ovom uputstvu naučit ćete sve o Python skupovima; kako se stvaraju, dodajući ili uklanjajući elemente iz njih i sve radnje izvršene na skupovima u Pythonu.

Video: Kompleti u Pythonu

Komplet je neuređena zbirka predmeta. Svaki postavljeni element jedinstven je (bez duplikata) i mora biti nepromjenjiv (ne može se mijenjati).

Međutim, sam set je promjenjiv. Iz njega možemo dodavati ili uklanjati stavke.

Skupovi se također mogu koristiti za izvođenje matematičkih operacija skupova poput spajanja, presijecanja, simetrične razlike itd.

Stvaranje Python skupova

Skup se stvara stavljanjem svih predmeta (elemenata) unutar kovrčavih zagrada (), odvojenih zarezom ili pomoću ugrađene set()funkcije.

Može imati bilo koji broj predmeta i mogu biti različitih vrsta (cijeli broj, plutajući sloj, tuple, niz itd.). Ali skup ne može imati elemente koji se mogu mijenjati poput popisa, skupova ili rječnika.

 # Different types of sets in Python # set of integers my_set = (1, 2, 3) print(my_set) # set of mixed datatypes my_set = (1.0, "Hello", (1, 2, 3)) print(my_set)

Izlaz

 (1, 2, 3) (1.0, (1, 2, 3), 'Pozdrav')

Isprobajte i sljedeće primjere.

 # set cannot have duplicates # Output: (1, 2, 3, 4) my_set = (1, 2, 3, 4, 3, 2) print(my_set) # we can make set from a list # Output: (1, 2, 3) my_set = set((1, 2, 3, 2)) print(my_set) # set cannot have mutable items # here (3, 4) is a mutable list # this will cause an error. my_set = (1, 2, (3, 4))

Izlaz

 (1, 2, 3, 4) (1, 2, 3) Traceback (najnoviji zadnji poziv): Datoteka "", redak 15, u my_set = (1, 2, (3, 4)) TypeError: tip koji se ne može podijeliti: 'popis'

Stvaranje praznog skupa pomalo je nezgodno.

Prazne kovrčave zagrade ()stvorit će prazan rječnik na Pythonu. Da bismo napravili skup bez ikakvih elemenata, koristimo set()funkciju bez ikakvog argumenta.

 # Distinguish set and dictionary while creating empty set # initialize a with () a = () # check data type of a print(type(a)) # initialize a with set() a = set() # check data type of a print(type(a))

Izlaz

 

Izmjena skupa u Pythonu

Kompleti su promjenjivi. Međutim, budući da su neuređena, indeksiranje nema značenja.

Ne možemo pristupiti niti promijeniti element seta pomoću indeksiranja ili rezanja. Postavljena vrsta podataka ne podržava je.

Pomoću add()metode možemo dodati jedan element, a pomoću metode više elemenata update(). update()Metoda može uzeti torke, popise, žice ili druge skupove kao svoj argument. U svim se slučajevima izbjegavaju duplikati.

 # initialize my_set my_set = (1, 3) print(my_set) # my_set(0) # if you uncomment the above line # you will get an error # TypeError: 'set' object does not support indexing # add an element # Output: (1, 2, 3) my_set.add(2) print(my_set) # add multiple elements # Output: (1, 2, 3, 4) my_set.update((2, 3, 4)) print(my_set) # add list and set # Output: (1, 2, 3, 4, 5, 6, 8) my_set.update((4, 5), (1, 6, 8)) print(my_set)

Izlaz

 (1, 3) (1, 2, 3) (1, 2, 3, 4) (1, 2, 3, 4, 5, 6, 8)

Uklanjanje elemenata iz skupa

Određena se stavka može ukloniti iz skupa pomoću metoda discard()i remove().

Jedina razlika između njih dvije je ta što discard()funkcija ostavlja skup nepromijenjenim ako element nije prisutan u skupu. S druge strane, remove()funkcija će izazvati pogrešku u takvom stanju (ako element nije prisutan u skupu).

Sljedeći primjer će to ilustrirati.

 # Difference between discard() and remove() # initialize my_set my_set = (1, 3, 4, 5, 6) print(my_set) # discard an element # Output: (1, 3, 5, 6) my_set.discard(4) print(my_set) # remove an element # Output: (1, 3, 5) my_set.remove(6) print(my_set) # discard an element # not present in my_set # Output: (1, 3, 5) my_set.discard(2) print(my_set) # remove an element # not present in my_set # you will get an error. # Output: KeyError my_set.remove(2)

Izlaz

 (1, 3, 4, 5, 6) (1, 3, 5, 6) (1, 3, 5) (1, 3, 5) Traceback (zadnji poziv posljednji): Datoteka "", redak 28, u KeyError: 2

Slično tome, možemo ukloniti i vratiti stavku pomoću pop()metode.

Budući da je set neuređeni tip podataka, ne postoji način određivanja koja će se stavka pojaviti. Potpuno je proizvoljan.

Također clear()metodom možemo ukloniti sve predmete iz skupa .

 # initialize my_set # Output: set of unique elements my_set = set("HelloWorld") print(my_set) # pop an element # Output: random element print(my_set.pop()) # pop another element my_set.pop() print(my_set) # clear my_set # Output: set() my_set.clear() print(my_set) print(my_set)

Izlaz

 ('H', 'l', 'r', 'W', 'o', 'd', 'e') H ('r', 'W', 'o', 'd', 'e' ) set ()

Operacije postavljanja Pythona

Skupovi se mogu koristiti za izvođenje matematičkih skupovnih operacija poput spajanja, presijecanja, razlike i simetrične razlike. To možemo učiniti s operatorima ili metodama.

Razmotrimo sljedeća dva skupa za sljedeće operacije.

 >>> A = (1, 2, 3, 4, 5) >>> B = (4, 5, 6, 7, 8)

Postavi Union

Postavite Union u Python

Unija A i B skup je svih elemenata iz oba skupa.

Spajanje se vrši pomoću |operatora. Isto se može postići uporabom union()metode.

 # Set union method # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use | operator # Output: (1, 2, 3, 4, 5, 6, 7, 8) print(A | B)

Izlaz

 (1, 2, 3, 4, 5, 6, 7, 8)

Isprobajte sljedeće primjere na Python ljusci.

 # use union function >>> A.union(B) (1, 2, 3, 4, 5, 6, 7, 8) # use union function on B >>> B.union(A) (1, 2, 3, 4, 5, 6, 7, 8)

Postavi presjek

Postavi presjek u Pythonu

Sjecište A i B skup je elemenata koji su česti u oba skupa.

Sjecište se izvodi pomoću &operatora. Isto se može postići uporabom intersection()metode.

 # Intersection of sets # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use & operator # Output: (4, 5) print(A & B)

Izlaz

 (4, 5)

Isprobajte sljedeće primjere na Python ljusci.

 # use intersection function on A >>> A.intersection(B) (4, 5) # use intersection function on B >>> B.intersection(A) (4, 5)

Postavi razliku

Postavi razliku u Pythonu

Razlika skupa B od skupa A (A - B) skup je elemenata koji se nalaze samo u A, ali ne i u B. Slično tome, B - A je skup elemenata u B, ali ne i u A.

Razlika se izvodi pomoću -operatora. Isto se može postići uporabom difference()metode.

 # Difference of two sets # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use - operator on A # Output: (1, 2, 3) print(A - B)

Izlaz

 (1, 2, 3)

Isprobajte sljedeće primjere na Python ljusci.

 # use difference function on A >>> A.difference(B) (1, 2, 3) # use - operator on B >>> B - A (8, 6, 7) # use difference function on B >>> B.difference(A) (8, 6, 7)

Postavi simetričnu razliku

Postavite simetričnu razliku u Pythonu

Simetrična razlika A i B skup je elemenata u A i B, ali ne u oba (isključujući sjecište).

Simetrična razlika provodi se pomoću ^operatora. Isto se može postići uporabom metode symmetric_difference().

 # Symmetric difference of two sets # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use operator # Output: (1, 2, 3, 6, 7, 8) print(A B)

Izlaz

 (1, 2, 3, 6, 7, 8)

Isprobajte sljedeće primjere na Python ljusci.

 # use symmetric_difference function on A >>> A.symmetric_difference(B) (1, 2, 3, 6, 7, 8) # use symmetric_difference function on B >>> B.symmetric_difference(A) (1, 2, 3, 6, 7, 8)

Ostale metode postavljanja Pythona

There are many set methods, some of which we have already used above. Here is a list of all the methods that are available with the set objects:

Method Description
add() Adds an element to the set
clear() Removes all elements from the set
copy() Returns a copy of the set
difference() Returns the difference of two or more sets as a new set
difference_update() Removes all elements of another set from this set
discard() Removes an element from the set if it is a member. (Do nothing if the element is not in set)
intersection() Returns the intersection of two sets as a new set
intersection_update() Updates the set with the intersection of itself and another
isdisjoint() Returns True if two sets have a null intersection
issubset() Returns True if another set contains this set
issuperset() Returns True if this set contains another set
pop() Removes and returns an arbitrary set element. Raises KeyError if the set is empty
remove() Removes an element from the set. If the element is not a member, raises a KeyError
symmetric_difference() Returns the symmetric difference of two sets as a new set
symmetric_difference_update() Updates a set with the symmetric difference of itself and another
union() Returns the union of sets in a new set
update() Updates the set with the union of itself and others

Other Set Operations

Set Membership Test

We can test if an item exists in a set or not, using the in keyword.

 # in keyword in a set # initialize my_set my_set = set("apple") # check if 'a' is present # Output: True print('a' in my_set) # check if 'p' is present # Output: False print('p' not in my_set)

Output

 True False

Iterating Through a Set

We can iterate through each item in a set using a for loop.

 >>> for letter in set("apple"):… print(letter)… a p e l

Built-in Functions with Set

Built-in functions like all(), any(), enumerate(), len(), max(), min(), sorted(), sum() etc. are commonly used with sets to perform different tasks.

Function Description
all() Returns True if all elements of the set are true (or if the set is empty).
any() Returns True if any element of the set is true. If the set is empty, returns False.
enumerate() Returns an enumerate object. It contains the index and value for all the items of the set as a pair.
len() Returns the length (the number of items) in the set.
max() Returns the largest item in the set.
min() Returns the smallest item in the set.
sorted() Returns a new sorted list from elements in the set(does not sort the set itself).
sum() Returns the sum of all elements in the set.

Python Frozenset

Frozenset je nova klasa koja ima karakteristike skupa, ali njeni se elementi ne mogu mijenjati jednom dodijeljeni. Dok su tuple nepromjenjivi popisi, frozenseti su nepromjenjivi skupovi.

Setovi koji se mogu mijenjati su neuklonjivi, pa se ne mogu koristiti kao ključevi rječnika. S druge strane, frozenseti se mogu raspršiti i mogu se koristiti kao ključevi rječnika.

Frozensets se mogu stvoriti pomoću funkcije frozenset ().

Ova vrsta podataka podržava metode sviđa copy(), difference(), intersection(), isdisjoint(), issubset(), issuperset(), symmetric_difference()i union(). Budući da je nepromjenjiv, nema metode koje dodaju ili uklanjaju elemente.

 # Frozensets # initialize A and B A = frozenset((1, 2, 3, 4)) B = frozenset((3, 4, 5, 6))

Isprobajte ove primjere na Python ljusci.

 >>> A.isdisjoint(B) False >>> A.difference(B) frozenset((1, 2)) >>> A | B frozenset((1, 2, 3, 4, 5, 6)) >>> A.add(3)… AttributeError: 'frozenset' object has no attribute 'add'

Zanimljivi članci...