Tutorial sul Python - Impostazione del tipo di dati

  1. Creare insiemi di Python
  2. Aggiornamento del set di Python
  3. Rimuovere elementi da un set di Python
  4. Operazioni di Python Set
  5. Metodi degli insiemi di Python
  6. Altre operazioni di Python set
  7. Funzioni integrate del set di Python
  8. Python Frozenset

In questa sezione, imparerete come creare set in Python e come aggiungere e rimuovere elementi dai set.

Il set contiene ** elementi ** unici ed è una lista ** di elementi ** non ordinati.

Info

set è un oggetto mutabile in modo da poter aggiungere e cancellare elementi da un set.

Creare insiemi di Python

Un set in Python può essere creato usando le parentesi graffe {} e gli elementi sono separati da virgole. Si può anche creare un insieme usando il metodo integrato set().

Gli elementi di un insieme possono essere di diversi tipi di dati. Gli elementi di un insieme dovrebbero essere immutabili. Per esempio, si può avere una tupla come elemento dell’insieme ma non si può avere un insieme o un dizionario o una lista come elementi dell’insieme.

>>> x = {3, 5, 7, 2, 4, 5}		
>>> print(x)		#prints the set variable
{2, 3, 4, 5, 7}
>>> print(type(x))		#checking type of x
<class 'set'>

Si potrebbe usare il metodo set() con parametri vuoti per creare una lista vuota. Se si scrive {} per creare un oggetto vuoto, esso viene interpretato come un dizionario:

>>> x = {}
>>> print(type(x))
<class 'dict'>

>>> x = set()
>>> print(type(x))
<class 'set'>

Aggiornamento del set di Python

L’indicizzazione e l’affettatura non possono essere utilizzate per modificare gli elementi di un set perché set non è un tipo di dati ordinato.

Un singolo elemento può essere aggiunto in un insieme usando il metodo add(). Se si vuole aggiungere più di un elemento nell’insieme, allora si deve usare il metodo update().

>>> s = {2, 4}
>>> print(s)
{2, 4}

>>> s.add(6)
>>> print(s)
{2, 4, 6}

>>> s.update([2, 4, 6])
>>> print(s)
{2, 4, 6}

>>> s.update([5,6], {7, 8, 9})
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

Rimuovere elementi da un set di Python

Per rimuovere un elemento da un insieme si può usare il metodo discard() o il metodo remove().

La differenza tra questi metodi è che il metodo discard() non richiederà nulla se l’elemento da cancellare non è nel set mentre, remove() genererà un errore se l’elemento da cancellare non viene trovato.

>>> s = {2, 4, 5, 6, 7, 8, 9}
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

>>> s.discard(6)
>>> print(s)
{2, 4, 5, 7, 8, 9}

>>> s.remove(8)
>>> print(s)
{2, 4, 5, 7, 9}

>>> s.discard(6)		#no error
>>> s.remove(8)			#generated an error
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    s.remove(8)
KeyError: 8

Si può anche usare pop() per rimuovere un elemento da un set. pop() rimuove e restituisce un elemento dell’insieme arbitrario.

>>> s = set("Python")
>>> s
{'o', 'n', 'h', 'P', 'y', 't'}
>>> s.pop()
o
>>> s.pop()
n
>>> s
{'h', 'P', 'y', 't'}
>>> s.clear()
>>> print(s)
set()

Si può usare il metodo clear() per cancellare tutti gli elementi impostati.

>>> s = set("Python")
>>> s.clear()
>>> s
set()

Operazioni di Python Set

È possibile eseguire operazioni come union, intersection, difference e symmetric_difference.

Supponiamo di avere due set x e y:

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 10, 11, 12}

Unione

L’unione di due set risulta in un nuovo set che contiene tutti gli elementi di entrambi i set.

Per eseguire l’operazione di unione, si può usare l’operatore | o il metodo union().

>>> print(x | y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

#using union() method on x
>>> x.union(y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
#union on y
>>> y.union(x)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Intersezione di insiemi di Python

L’intersezione di due set risulta in un nuovo set contenente gli elementi che sono comuni in entrambi i set.

Per eseguire l’operazione di intersezione, si può usare l’operatore & o il metodo intersection().

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x & y)
{1, 2, 6}

#using intersection() method on x
>>> x.intersection(y)
{1, 2, 6}
#intersection on y
>>> y.intersection(x)
{1, 2, 6}

Differenza degli insiemi di Python

La differenza tra due set risulta in un nuovo set che contiene elementi del primo set che non sono presenti nel secondo set.

Per esempio, x - y sono elementi di x non in y. Allo stesso modo, y - x è costituito da elementi di y non in x.

Per eseguire la differenza, si può usare l’operatore - o il metodo difference().

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x - y)
{3, 4, 5}

#using difference() method on x
>>> x.difference(y)
{3, 4, 5}
#diference on y
>>> y.difference(x)
{8, 9, 7}

Insiemi di Python Differenza simmetrica

La differenza simmetrica di due set risulta in un nuovo set che contiene elementi che non sono comuni in entrambi i set.

Per eseguire la differenza simmetrica, si può usare l’operatore ^ o il metodo symmetric_difference().

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x ^ y)
{3, 4, 5, 7, 8, 9}

#using symmetric_difference() method on x
>>> x.symmetric_difference(y)
{3, 4, 5, 7, 8, 9}
#symmetric_diference on y
>>> y.symmetric_difference(x)
{3, 4, 5, 7, 8, 9}

Metodi degli insiemi di Python

Di seguito è riportato l’lista dei metodi che possono essere applicati sui set in Python:

Metodo Descrizione
add() aggiungere un elemento ad un set
clear() cancella gli elementi del set (cancella l’intero set)
copy() restituire la copia di un set
difference() restituire un nuovo set che contiene elementi del primo set che non sono presenti nel secondo set.
difference_update() rimuovere tutti gli elementi di un altro set dall’attuale set
discard() rimuovere un elemento specifico da un set
intersection() restituire un nuovo set contenente gli elementi comuni ad entrambi i set.
intersection_update() aggiornare un set con l’intersezione di questo set con un altro set
isdisdisjoint() restituisce un True quando due set risultano in un’intersezione nulla
issubset() restituire un True quando un altro set ha il set corrente
issuperset() restituire un True quando il set corrente ha un altro set
pop() restituire un elemento da un set
remove() rimuovere un elemento specifico da un set. Se l’elemento non è nel set verrà generato un errore.
symmetric_difference() restituire un nuovo set che contiene elementi non comuni in entrambi i set.
symmetric_difference_update() aggiornare un set con la differenza simmetrica di questo set con un altro set
union() restituire un nuovo set contenente tutti gli elementi di entrambi i set.
update() aggiornare un set con l’unione di questo set con un altro set

Altre operazioni di Python set

Controllo dei membri del set

La parola chiave in verifica se un elemento è un membro dell’insieme o meno.

>>> s = set("Blue")
>>> print('o' in s)
False
>>> print('l' in s)
True

Iterare attraverso un set

Si può iterare attraverso un set utilizzando il ciclo for loop:

for i in set("Blue"):
    print(i)

Risultato:

B
l
u
e

Funzioni integrate del set di Python

Di seguito sono riportate alcune delle funzioni integrate che possono essere utilizzate con i set per eseguire diversi compiti:

Funzioni Descrizione
all() restituisce True quando tutti gli elementi dell’insieme sono True. Restituisce anche True quando l’insieme è vuoto.
any() restituire True quando uno qualsiasi degli elementi dell’insieme è True. Restituisce False quando l’insieme è vuoto.
enumerate() restituire l’indice e il valore di tutti gli elementi dell’insieme come tupla. Restituisce un oggetto enumerate.
len() restituire il numero di articoli di un set o la lunghezza del set.
set() definire un set.
max() restituire la voce massima del set.
min() restituire la voce minima del set.
sorted() restituire una lista ordinata di elementi di un set.
sum() restituire la somma di tutti gli elementi del set.

Python Frozenset

Frozenset è un set speciale i cui elementi non possono essere aggiornati una volta assegnati. I Frozenset sono set immutabili.

Poiché i set sono mutevoli, non è possibile utilizzarli come chiave per il dizionario, ma i set congelati sono immutabili, quindi è possibile utilizzare i set congelati come chiavi di dizionario.

Un frozenset può essere creato usando il metodo frozenset().

Di seguito sono riportati alcuni dei metodi supportati da frozenset:

  • copy()
  • difference()
  • intersection()
  • isdisdisjoint()
  • issubset()
  • issuperset()
  • symmetric_difference()
  • union()
>>> x = frozenset([2,6,3,9])
>>> y = frozenset([6,1,2,4])
>>> x.difference(y)
frozenset({9, 3})