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

Python-sets

In deze tutorial leer je alles over Python-sets; hoe ze worden gemaakt, elementen toevoegen of verwijderen, en alle bewerkingen die worden uitgevoerd op sets in Python.

Video:sets in Python

Een set is een ongeordende verzameling items. Elk ingesteld element is uniek (geen duplicaten) en moet onveranderlijk zijn (kan niet worden gewijzigd).

Een set zelf is echter veranderlijk. We kunnen er items aan toevoegen of eruit verwijderen.

Sets kunnen ook worden gebruikt om wiskundige setbewerkingen uit te voeren, zoals unie, intersectie, symmetrisch verschil, enz.


Python-sets maken

Een set wordt gemaakt door alle items (elementen) tussen accolades te plaatsen {} , gescheiden door komma's, of met behulp van de ingebouwde set() functie.

Het kan een willekeurig aantal items hebben en ze kunnen van verschillende typen zijn (integer, float, tuple, string etc.). Maar een set kan geen veranderlijke elementen zoals lijsten, sets of woordenboeken als elementen hebben.

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

Uitvoer

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

Probeer ook de volgende voorbeelden.

# 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]}

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 maken is een beetje lastig.

Lege accolades {} zal een leeg woordenboek maken in Python. Om een ​​set zonder elementen te maken, gebruiken we de set() functie zonder enig 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))

Uitvoer

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

Een set wijzigen in Python

Sets zijn veranderlijk. Omdat ze echter ongeordend zijn, heeft indexeren geen betekenis.

We kunnen een element van een set niet openen of wijzigen met behulp van indexering of slicing. Het ingestelde gegevenstype ondersteunt dit niet.

We kunnen een enkel element toevoegen met behulp van de add() methode, en meerdere elementen met behulp van de update() methode. De update() methode kan tupels, lijsten, strings of andere sets als argument gebruiken. In alle gevallen worden duplicaten vermeden.

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

Uitvoer

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

Elementen uit een set verwijderen

Een bepaald item kan uit een set worden verwijderd met behulp van de methoden discard() en remove() .

Het enige verschil tussen de twee is dat de discard() functie laat een set ongewijzigd als het element niet aanwezig is in de set. Aan de andere kant, de remove() functie zal in een dergelijke toestand een fout opleveren (als het element niet in de set aanwezig is).

Het volgende voorbeeld zal dit illustreren.

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

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

Op dezelfde manier kunnen we een artikel verwijderen en retourneren met de pop() methode.

Aangezien set een ongeordend gegevenstype is, is er geen manier om te bepalen welk item wordt gepopt. Het is volkomen willekeurig.

We kunnen ook alle items uit een set verwijderen met de 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)

Uitvoer

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

Python-setbewerkingen

Sets kunnen worden gebruikt om wiskundige setbewerkingen uit te voeren, zoals unie, intersectie, verschil en symmetrisch verschil. We kunnen dit doen met operators of methoden.

Laten we eens kijken naar de volgende twee sets voor de volgende bewerkingen.

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

Union instellen

Unie van A en B is een verzameling van alle elementen uit beide verzamelingen.

Union wordt uitgevoerd met | exploitant. Hetzelfde kan worden bereikt met de 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)

Uitvoer

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

Probeer de volgende voorbeelden op de 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}

Stel kruispunt in

Snijpunt van A en B is een set elementen die in beide sets gemeenschappelijk zijn.

Kruising wordt uitgevoerd met & exploitant. Hetzelfde kan worden bereikt met de intersection() methode.

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

Uitvoer

{4, 5}

Probeer de volgende voorbeelden op de Python-shell.

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

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

Verschil instellen

Verschil van de set B van set A (A - B ) is een set elementen die alleen in A . staan maar niet in B . Evenzo, B - A is een set elementen in B maar niet in A .

Het verschil wordt uitgevoerd met - exploitant. Hetzelfde kan worden bereikt met de difference() methode.

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

Uitvoer

{1, 2, 3}

Probeer de volgende voorbeelden op de 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}

Stel symmetrisch verschil in

Symmetrisch verschil van A en B is een set elementen in A en B maar niet in beide (exclusief de kruising).

Symmetrisch verschil wordt uitgevoerd met ^ exploitant. Hetzelfde kan worden bereikt met de methode 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)

Uitvoer

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

Probeer de volgende voorbeelden op de 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}

Andere Python-setmethoden

Er zijn veel vaste methoden, waarvan we er enkele hierboven al hebben gebruikt. Hier is een lijst van alle methoden die beschikbaar zijn met de ingestelde objecten:

Methode Beschrijving
add() Voegt een element toe aan de set
clear() Verwijdert alle elementen uit de set
copy() Retourneert een kopie van de set
verschil() Retourneert het verschil van twee of meer sets als een nieuwe set
difference_update() Verwijdert alle elementen van een andere set uit deze set
discard() Verwijdert een element uit de set als het een lid is. (Doe niets als het element niet is ingesteld)
kruispunt() Retourneert het snijpunt van twee sets als een nieuwe set
intersection_update() Updatet de set met het snijpunt van zichzelf en een ander
isdisjoint() Retourneert True als twee sets een nuldoorsnede hebben
issubset() Retourneert True als een andere set deze set bevat
issuperset() Retourneert True als deze set een andere set bevat
pop() Verwijdert en retourneert een willekeurig set-element. Verhoogt KeyError als de set leeg is
verwijder() Verwijdert een element uit de set. Als het element geen lid is, verhoogt het een KeyError
symmetric_difference() Retourneert het symmetrische verschil van twee sets als een nieuwe set
symmetric_difference_update() Updatet een set met het symmetrische verschil tussen zichzelf en een ander
union() Retourneert de vereniging van sets in een nieuwe set
update() Updatet de set met de vereniging van zichzelf en anderen

Andere ingestelde bewerkingen

Lidmaatschapstest instellen

We kunnen testen of een item in een set bestaat of niet, met behulp van de in zoekwoord.

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

Uitvoer

True
False

Itereren door een set

We kunnen elk item in een set herhalen met een for lus.

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

Ingebouwde functies met Set

Ingebouwde functies zoals all() , any() , enumerate() , len() , max() , min() , sorted() , sum() enz. worden vaak gebruikt met sets om verschillende taken uit te voeren.

Functie Beschrijving
all() Retourneert True als alle elementen van de set waar zijn (of als de set leeg is).
elke() Retourneert True als een element van de set waar is. Als de set leeg is, retourneert False .
enumerate() Retourneert een enumerate object. Het bevat de index en waarde voor alle items van de set als een paar.
len() Retourneert de lengte (het aantal items) in de set.
max() Retourneert het grootste item in de set.
min() Retourneert het kleinste item in de set.
gesorteerd() Retourneert een nieuwe gesorteerde lijst van elementen in de set (sorteert de set zelf niet).
sum() Retourneert de som van alle elementen in de set.

Python Frozenset

Frozenset is een nieuwe klasse die de kenmerken van een set heeft, maar de elementen ervan kunnen niet worden gewijzigd nadat ze zijn toegewezen. Terwijl tuples onveranderlijke lijsten zijn, zijn frozensets onveranderlijke sets.

Sets die veranderbaar zijn, zijn unhashable, dus ze kunnen niet worden gebruikt als woordenboeksleutels. Aan de andere kant zijn bevroren sets hashbaar en kunnen ze worden gebruikt als sleutels tot een woordenboek.

Frozensets kunnen worden gemaakt met de functie frozenset().

Dit gegevenstype ondersteunt methoden zoals copy() , difference() , intersection() , isdisjoint() , issubset() , issuperset() , symmetric_difference() en union() . Omdat het onveranderlijk is, heeft het geen methoden die elementen toevoegen of verwijderen.

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

Probeer deze voorbeelden op de 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'

Python

  1. Python-gegevenstypen
  2. Python-operators
  3. Python pass-instructie
  4. Python-functieargumenten
  5. Python-woordenboek
  6. Python-iterators
  7. Python-sluitingen
  8. Python datetime
  9. Python - Overzicht
  10. Python - Cijfers
  11. Python - Strings