Python Sets
Table of Contents
In diesem Tutorial erfahren Sie alles über Python-Sets; wie sie erstellt werden, Elemente hinzugefügt oder daraus entfernt werden und alle Operationen, die an Sätzen in Python ausgeführt werden.
Ein Set ist eine ungeordnete Sammlung von Elementen. Jedes Set-Element ist einzigartig (keine Duplikate) und muss unveränderlich sein (kann nicht geändert werden).
Ein Set selbst ist jedoch veränderbar. Wir können Elemente hinzufügen oder daraus entfernen.
Mengen können auch verwendet werden, um mathematische Mengenoperationen wie Vereinigung, Schnitt, symmetrische Differenz usw. durchzuführen.
Creating Python Sets
Ein Set wird erstellt, indem alle Elemente (Elemente) in geschweifte Klammern gesetzt werden {}
, durch Komma getrennt, oder mit dem built-in set()
Funktion.
Es kann eine beliebige Anzahl von Elementen haben und sie können von unterschiedlichem Typ sein (Integer, Float, Tupel, String usw.). Aber eine Menge kann keine veränderlichen Elemente wie Listen, Mengen oder Wörterbücher als ihre Elemente haben.
# Verschiedene Arten von 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)
Output
{1, 2, 3} {1.0, (1, 2, 3), 'Hello'}
Probieren Sie auch die folgenden Beispiele aus.
# Set darf keine Duplikate haben # Output: {1, 2, 3, 4} my_set = {1, 2, 3, 4, 3, 2} print(my_set) # wir können ein Set aus einer Liste machen # Output: {1, 2, 3} my_set = set([1, 2, 3, 2]) print(my_set) # Set darf keine veränderbaren Elemente enthalten # hier [3, 4] ist eine veränderliche Liste # dies führt zu einem Fehler. my_set = {1, 2, [3, 4]}
Output
{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'
Ein leeres Set zu erstellen ist etwas knifflig.
Leere geschweifte Klammern {}
erstellt ein leeres Wörterbuch in Python. Um eine Menge ohne Elemente zu erstellen, verwenden wir dieset()
Funktion ohne Argument.
# Unterscheiden Sie Set und Wörterbuch beim Erstellen eines leeren Sets # 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))
Output
<class 'dict'> <class 'set'>
Modifying a set in Python
Sätze sind veränderbar. Da sie jedoch ungeordnet sind, hat die Indizierung keine Bedeutung.
Wir können nicht auf ein Element einer Menge zugreifen oder es mithilfe von Indizierung oder Slicing ändern. Datentyp festlegen wird nicht unterstützt.
Wir können ein einzelnes Element hinzufügen, indem wir die add()
methode und mehrere Elemente mit der update()
method. Die update()
Methode kann als Argument Tupel, Listen, Strings oder andere Mengen annehmen. In allen Fällen werden Duplikate vermieden.
# 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)
Output
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}
Removing elements from a set
Ein bestimmter Gegenstand kann mit den Methoden . aus einem Set entfernt werden discard()
und remove()
.
Der einzige Unterschied zwischen den beiden besteht darin, dass die discard()
Funktion lässt eine Menge unverändert, wenn das Element nicht in der Menge vorhanden ist. Auf der anderen Seite ist die remove()
Funktion in einer solchen Bedingung einen Fehler auslöst (wenn das Element nicht in der Menge vorhanden ist).
Das folgende Beispiel soll dies veranschaulichen.
# 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)
Output
{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2
Ebenso können wir einen Artikel entfernen und zurückgeben, indem wir die pop()
Methode.
Da es sich bei set um einen ungeordneten Datentyp handelt, kann nicht bestimmt werden, welches Element angezeigt wird. Es ist völlig willkürlich.
Wir können auch alle Gegenstände aus einem Set entfernen, indem wir die clear()
Methode.
# 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)
Output
{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()
Python Set Operations
Mengen können verwendet werden, um mathematische Mengenoperationen wie Vereinigung, Schnitt, Differenz und symmetrische Differenz durchzuführen. Wir können dies mit Operatoren oder Methoden tun.
Betrachten wir die folgenden beiden Mengen für die folgenden Operationen.
>>> A = {1, 2, 3, 4, 5} >>> B = {4, 5, 6, 7, 8}
Set Union
Vereinigung von A und B ist eine Menge aller Elemente aus beiden Mengen.
Die Vereinigung erfolgt mit |
operator. Dasselbe kann mit dem erreicht werden union()
Methode.
# 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)
Output
{1, 2, 3, 4, 5, 6, 7, 8}
Probieren Sie die folgenden Beispiele in der Python-Shell aus.
# 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}
Set Intersection
Schnittpunkt von A und B ist eine Menge von Elementen, die in beiden Mengen gemeinsam sind.
Die Schnittmenge wird durch &
operator. Dasselbe kann mit dem intersection()
method.
# 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)
Output
{4, 5}
Probieren Sie die folgenden Beispiele in der Python-Shell aus.
# use intersection function on A >>> A.intersection(B) {4, 5} # use intersection function on B >>> B.intersection(A) {4, 5}
Set Difference
Unterschied des Set B vom Set A(A – B) ist eine Menge von Elementen, die nur in A
aber nicht in B. Ähnlich, B – A ist eine Menge von Elementen in B aber nicht in A.
Die Differenz wird durchgeführt mit -
operator. Dasselbe kann mit dem erreicht werden difference()
method.
# 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)
Output
{1, 2, 3}
Probieren Sie die folgenden Beispiele in der Python-Shell aus.
# 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}
Set Symmetric Difference
Symmetrische Differenz von A und B ist eine Menge von Elementen in A und B aber nicht in beiden (außer der Kreuzung).
Symmetrische Differenz wird durchgeführt mit ^
operator. Das gleiche kann mit der Methode erreicht werden 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)
Output
{1, 2, 3, 6, 7, 8}
Probieren Sie die folgenden Beispiele in der Python-Shell aus.
# 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}
Other Python Set Methods
Es gibt viele Set-Methoden, von denen wir einige oben bereits verwendet haben. Hier ist eine Liste aller Methoden, die mit den eingestellten Objekten verfügbar sind:
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
Wir können testen, ob ein Artikel in einem Set vorhanden ist oder nicht, indem wir die in
Stichwort.
# 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
Wir können jedes Element in einer Menge mit a . iterieren for
Schleife.
>>> for letter in set("apple"): ... print(letter) ... a p e l
Built-in Functions with Set
Built-in Funktionen wie all()
, any()
, enumerate()
, len()
, max()
, min()
, sorted()
, sum()
usw. werden häufig mit Sets verwendet, um verschiedene Aufgaben auszuführen.
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 ist eine neue Klasse, die die Eigenschaften einer Menge hat, deren Elemente jedoch nach der Zuweisung nicht mehr geändert werden können. Während Tupel unveränderliche Listen sind, sind Frozensets unveränderliche Mengen.
Sätze, die veränderlich sind, können nicht gehasht werden, sodass sie nicht als Wörterbuchschlüssel verwendet werden können. Auf der anderen Seite sind Frozensets hashfähig und können als Schlüssel zu einem Wörterbuch verwendet werden.
Frozensets können mit der Funktion frozenset() erstellt werden.
Dieser Datentyp unterstützt Methoden wie copy()
, difference()
, intersection()
, isdisjoint()
, issubset()
, issuperset()
, symmetric_difference()
und union()
.
Da es unveränderlich ist, verfügt es nicht über Methoden zum Hinzufügen oder Entfernen von Elementen.
# Frozensets # initialize A and B A = frozenset([1, 2, 3, 4]) B = frozenset([3, 4, 5, 6])
Probieren Sie diese Beispiele in der Python-Shell aus.
>>> 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'