Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python-sets beheersen: aanmaken, manipuleren en bewerkingen

Python-sets

Ontdek hoe Python's set-datatype deduplicatie en set-gebaseerde bewerkingen vereenvoudigt. Deze gids behandelt aanmaken, wijzigen, verwijderen en alle essentiële set-bewerkingen.

Video: Sets in Python

Python-sets ondersteunen wiskundige set-bewerkingen zoals unie, doorsnede, verschil en symmetrisch verschil, wat ze ideaal maakt voor taken zoals deduplicatie, lidmaatschapstesten en set-algebra.


Python-sets aanmaken

Gebruik accolades of de ingebouwde set()-constructor om een set aan te maken. Elementen kunnen van elk onveranderlijk type zijn, maar mutable types zoals lijsten, dicts of andere sets kunnen niet opgenomen worden.

# Voorbeeld 1: Sets met verschillende datatypes
# set van integers
my_set = {1, 2, 3}
print(my_set)
# set van gemengde datatypes
my_set = {1.0, 'Hallo', (1, 2, 3)}
print(my_set)

Uitvoer

{1, 2, 3} {1.0, (1, 2, 3), 'Hallo'}

Let op hoe dubbele waarden automatisch worden verwijderd en hoe tuples – als onveranderlijk – geaccepteerd worden.

# Dubbele waarden verwijderen
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# Set construeren vanuit een lijst
my_set = set([1, 2, 3, 2])
print(my_set)
# Poging om een mutable item op te nemen geeft een fout
# my_set = {1, 2, [3, 4]}  # TypeError: unhashable type: 'list'

Uitvoer

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

Een lege set aanmaken vereist de set()-constructor; {} creëert een lege dictionary.

# Set en dictionary onderscheiden bij lege structuren
a = {}
print(type(a))
a = set()
print(type(a))

Uitvoer

<class 'dict'> <class 'set'>

Een set in Python wijzigen

Sets zijn mutable, maar ondersteunen geen indexering of slicing vanwege hun ongerangschikte aard.

Gebruik add() om een enkel element toe te voegen en update() om een ander iterable in de set te mergen. Dubbele entries worden automatisch genegeerd.

# Voorbeeld: Elementen toevoegen
my_set = {1, 3}
print(my_set)
# Poging om een set te indexeren geeft een fout
# my_set[0]  # TypeError: 'set' object does not support indexing
# Enkel element toevoegen
my_set.add(2)
print(my_set)
# Meerdere elementen uit een lijst toevoegen
my_set.update([2, 3, 4])
print(my_set)
# Een lijst en een andere set combineren
my_set.update([4, 5], {1, 6, 8})
print(my_set)

Uitvoer

{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}

Elementen uit een set verwijderen

Gebruik discard() om een element te verwijderen als het bestaat, of niets te doen anders. remove() geeft een KeyError als het element afwezig is.

# Voorbeeld: Discard vs. remove
my_set = {1, 3, 4, 5, 6}
print(my_set)
my_set.discard(4)
print(my_set)
my_set.remove(6)
print(my_set)
my_set.discard(2)
print(my_set)
# De volgende zal KeyError geven
# my_set.remove(2)

Uitvoer

{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

De pop()-methode verwijdert en retourneert een willekeurig element, terwijl clear() de set volledig leegmaakt.

# Pop en clear voorbeeld
my_set = set("HalloWereld")
print(my_set)
print(my_set.pop())
print(my_set)
my_set.clear()
print(my_set)

Uitvoer

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

Python-setbewerkingen

Python-sets ondersteunen klassieke set-algebra: unie, doorsnede, verschil en symmetrisch verschil. Deze kunnen aangeroepen worden via operatoren of speciale methoden.

Laten we twee voorbeeldsets gebruiken:

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

Unie

Python-sets beheersen: aanmaken, manipuleren en bewerkingen

De unie van A en B combineert alle unieke elementen.

print(A | B)

Uitvoer

{1, 2, 3, 4, 5, 6, 7, 8}

Doorsnede

Python-sets beheersen: aanmaken, manipuleren en bewerkingen

De doorsnede retourneert alleen elementen gemeen aan beide sets.

print(A & B)

Uitvoer

{4, 5}

Verschil

Python-sets beheersen: aanmaken, manipuleren en bewerkingen

Het verschil A - B geeft elementen in A maar niet in B.

print(A - B)

Uitvoer

{1, 2, 3}

Symmetrisch verschil

Python-sets beheersen: aanmaken, manipuleren en bewerkingen

Symmetrisch verschil A ^ B retourneert elementen die in één van de sets zitten maar niet in beide.

print(A ^ B)

Uitvoer

{1, 2, 3, 6, 7, 8}

Aanvullende set-methoden

Hieronder een snel overzicht van alle ingebouwde methoden op set-objecten:

MethodeBeschrijving
add()Voegt een element toe aan de set
clear()Verwijdert alle elementen
copy()Retourneert een shallow copy
difference()Retourneert nieuwe set met elementen in caller maar niet in anderen
difference_update()In-place verschil verwijdering
discard()Verwijder element als aanwezig; geen fout als afwezig
intersection()Retourneert nieuwe set met gemeenschappelijke elementen
intersection_update()In-place doorsnede update
isdisjoint()True als sets geen elementen gemeen hebben
issubset()True als caller een subset is van een andere set
issuperset()True als caller een andere set volledig bevat
pop()Verwijdert en retourneert willekeurig element; KeyError als leeg
remove()Verwijder element; KeyError als afwezig
symmetric_difference()Retourneert nieuwe set met elementen exclusief aan elke set
symmetric_difference_update()In-place symmetrisch verschil update
union()Retourneert nieuwe set met alle unieke elementen
update()In-place unie met een ander iterable

Set-lidmaatschapstest

Controleer op elementbestaan met het in-trefwoord.

my_set = set("appel")
print('a' in my_set)  # True
print('p' not in my_set)  # False

Uitvoer

True False

Itereren door een set

Loop over een set met een standaard for-lus; volgorde is niet gegarandeerd.

for letter in set("appel"):
    print(letter)

Ingebouwde functies met sets

Functies als len(), max(), min(), sum(), all(), any() en sorted() werken naadloos met sets. Hier een tabel van veelgebruikte hulpmiddelen:

FunctieBeschrijving
all()True als alle elementen truthy zijn (of set leeg is)
any()True als ten minste één element truthy is
enumerate()Itereert met een index, handig voor debugging
len()Aantal elementen
max()Grootste element
min()Kleinste element
sorted()Retourneert een gesorteerde lijst uit de set
sum()Som van alle numerieke elementen

Python Frozenset

Een frozenset is een onveranderlijke tegenhanger van een set. Eenmaal aangemaakt, kunnen de elementen niet veranderen, wat het hashable maakt en bruikbaar als dictionary-sleutel.

A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

Ondersteunde bewerkingen zijn gelijk aan die van gewone sets, behalve muterende methoden.

print(A.isdisjoint(B))
print(A.difference(B))
print(A | B)
# Poging om een element toe te voegen geeft AttributeError
# A.add(3)  # AttributeError: 'frozenset' object has no attribute 'add'

Python

  1. Python Datatypes onder de knie krijgen: Een praktische gids
  2. Python Operators onder de knie krijgen: Een uitgebreide gids
  3. Python Pass Statement onder de knie krijgen: Een praktische gids
  4. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  5. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  6. Python-iterators: hoe ze werken en hoe je je eigen maakt
  7. Python-closures uitgelegd: hoe geneste functies variabelen vangen
  8. Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
  9. Python Overzicht: Hoog-Niveau, Leesbaar, Interactief & Object-Georiënteerd
  10. Python Numbers: Immutable Numerieke Datatypes Begrijpen
  11. Python Strings Beheersen: Aanmaken, Benaderen en Manipuleren