Pythonsett (med eksempler)

I denne opplæringen lærer du alt om Python-sett; hvordan de blir opprettet, legge til eller fjerne elementer fra dem, og alle operasjoner utført på sett i Python.

Video: Sett i Python

Et sett er en uordnet samling av gjenstander. Hvert sett element er unikt (ingen duplikater) og må være uforanderlig (kan ikke endres).

Et sett i seg selv er imidlertid foranderlig. Vi kan legge til eller fjerne gjenstander fra den.

Sett kan også brukes til å utføre matematiske settoperasjoner som union, skjæringspunkt, symmetrisk forskjell osv.

Opprette Python-sett

Et sett opprettes ved å plassere alle elementene (elementene) i krøllete bukseseler (), atskilt med komma, eller ved å bruke den innebygde set()funksjonen.

Det kan ha et hvilket som helst antall elementer, og de kan være av forskjellige typer (heltall, float, tuple, streng osv.). Men et sett kan ikke ha foranderlige elementer som lister, sett eller ordbøker som elementer.

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

Produksjon

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

Prøv også følgende eksempler.

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

Produksjon

 (1, 2, 3, 4) (1, 2, 3) Sporing (siste samtale sist): Fil "", linje 15, i mitt_sett = (1, 2, (3, 4)) Type Feil: uskadelig type: 'liste'

Å lage et tomt sett er litt vanskelig.

Tomme krøllete bukseseler ()vil gjøre en tom ordbok i Python. For å lage et sett uten noen elementer, bruker vi set()funksjonen uten noe argument.

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

Produksjon

 

Endring av et sett i Python

Sett er mutable. Men siden de er uordnet, har indeksering ingen betydning.

Vi kan ikke få tilgang til eller endre et element i et sett ved hjelp av indeksering eller kutting. Angi datatype støtter ikke den.

Vi kan legge til et enkelt element ved hjelp av add()metoden, og flere elementer ved hjelp av update()metoden. Den update()metoden kan ta tupler, lister, strenger eller andre sett som sin argumentasjon. I alle tilfeller unngås duplikater.

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

Produksjon

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

Fjerne elementer fra et sett

Et bestemt element kan fjernes fra et sett ved hjelp av metodene discard()og remove().

Den eneste forskjellen mellom de to er at discard()funksjonen etterlater et sett uendret hvis elementet ikke er tilstede i settet. På den annen side vil remove()funksjonen heve en feil i en slik tilstand (hvis element ikke er tilstede i settet).

Følgende eksempel vil illustrere dette.

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

Produksjon

 (1, 3, 4, 5, 6) (1, 3, 5, 6) (1, 3, 5) (1, 3, 5) Sporing (siste samtale sist): Fil "", linje 28, i KeyError: 2

På samme måte kan vi fjerne og returnere en vare ved hjelp av pop()metoden.

Siden sett er en ikke-ordnet datatype, er det ingen måte å bestemme hvilket element som skal poppes. Det er helt vilkårlig.

Vi kan også fjerne alle elementene fra et sett ved hjelp av clear()metoden.

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

Produksjon

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

Python Set-operasjoner

Sett kan brukes til å utføre matematiske settoperasjoner som forening, kryss, forskjell og symmetrisk forskjell. Vi kan gjøre dette med operatører eller metoder.

La oss se på følgende to sett for følgende operasjoner.

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

Sett Union

Sett Union i Python

Union av A og B er et sett med alle elementene fra begge settene.

Union utføres med |operatør. Det samme kan oppnås ved hjelp av union()metoden.

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

Produksjon

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

Prøv følgende eksempler på Python shell.

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

Sett kryss

Sett kryss i Python

Skjæringspunktet mellom A og B er et sett med elementer som er vanlige i begge settene.

Skjæringspunktet utføres med &operatøren. Det samme kan oppnås ved hjelp av intersection()metoden.

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

Produksjon

 (4, 5)

Prøv følgende eksempler på Python shell.

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

Sett forskjell

Sett forskjell i Python

Forskjellen til mengde B fra mengde A (A - B) er et sett med elementer som bare er i A, men ikke i B. Tilsvarende er B - A et sett med elementer i B, men ikke i A.

Forskjellen utføres med -operatøren. Det samme kan oppnås ved hjelp av difference()metoden.

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

Produksjon

 (1, 2, 3)

Prøv følgende eksempler på Python shell.

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

Angi symmetrisk forskjell

Sett symmetrisk forskjell i Python

Symmetrisk forskjell mellom A og B er et sett med elementer i A og B, men ikke i begge deler (unntatt krysset).

Symmetrisk forskjell utføres ved hjelp av ^operator. Det samme kan oppnås ved hjelp av metoden 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)

Produksjon

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

Prøv følgende eksempler på Python shell.

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

Andre Python-settmetoder

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 er en ny klasse som har egenskapene til et sett, men elementene kan ikke endres når de er tildelt. Mens tupler er uforanderlige lister, er frozensets uforanderlige sett.

Sett som kan muteres, kan ikke fjernes, så de kan ikke brukes som ordbokstaster. På den annen side er frozensets hashable og kan brukes som nøkler til en ordbok.

Frozensets kan opprettes ved hjelp av frozenset () -funksjonen.

Denne datatypen støtter metoder som copy(), difference(), intersection(), isdisjoint(), issubset(), issuperset(), symmetric_difference()og union(). Å være uforanderlig har den ikke metoder som legger til eller fjerner elementer.

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

Prøv disse eksemplene på Python shell.

 >>> 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'

Interessante artikler...