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

 

Set Union in Python
Union in Python festlegen

 

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

 

Set Intersection in Python
Schnittpunkt in Python festlegen

 

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

Set Difference in Python
Unterschied in Python einstellen

 

Unterschied des Set B vom Set A(AB) ist eine Menge von Elementen, die nur in A
aber nicht in B. Ähnlich, BA 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

 

Set Symmetric Difference in Python
Symmetrische Differenz in Python festlegen

 

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'