W3docs

Accedere agli Elementi di un Set

Impara come accedere agli elementi di un set Python tramite iterazione, test di appartenenza e conversione, con esempi chiari.

I set in Python sono collezioni non ordinate di elementi unici. Poiché i set non hanno un ordine garantito, non supportano l'indicizzazione, lo slicing o altri accessi in stile sequenza. Questo capitolo tratta ogni tecnica pratica per leggere gli elementi da un set: iterazione, test di appartenenza, conversione in lista e alcuni schemi reali che mostrano perché ciascun approccio è utile.

Perché Non Si Può Indicizzare un Set

Tentare di accedere a un elemento del set tramite posizione genera immediatamente un TypeError:

L'indicizzazione di un set genera un TypeError

python— editable, runs on the server

Questo è previsto dal design. I set memorizzano gli elementi in una tabella hash, non in una sequenza, quindi non esiste una posizione stabile di "primo" o "secondo" elemento. L'ordine che appare quando si stampa un set può cambiare tra versioni di Python e persino tra esecuzioni diverse.

Iterare su un Set

Il modo standard per visitare ogni elemento è un ciclo for. Poiché l'ordine non è garantito, gli elementi possono apparire in qualsiasi sequenza a ogni esecuzione del ciclo.

Itera su ogni elemento di un set

python— editable, runs on the server

Output tipico (l'ordine può variare):

cherry
banana
apple

Raccogliere risultati durante l'iterazione

È possibile costruire una nuova lista di valori trasformati durante l'iterazione:

Costruire una lista di frutti in maiuscolo da un set

my_set = {"apple", "banana", "cherry"}
upper_fruits = [item.upper() for item in my_set]
print(upper_fruits)  # e.g. ['CHERRY', 'BANANA', 'APPLE']

La list comprehension funziona perché chiede al set di consegnare un elemento alla volta — non è richiesto alcun indice.

Test di Appartenenza con in e not in

Il modo più rapido e comune per verificare se un valore esiste in un set è l'operatore in. Poiché i set sono supportati da una tabella hash, questa verifica viene eseguita in tempo medio O(1) — molto più veloce della scansione di una lista.

Verifica se un elemento è in un set

python— editable, runs on the server

Usa not in per verificare l'assenza:

Verifica se un elemento è assente da un set

fruits = {"apple", "banana", "cherry"}
search = "mango"

if search not in fruits:
    print(f"{search} is not in the collection")
# mango is not in the collection

Esempio pratico: deduplicare e filtrare una lista

Uno schema comune combina i set con il test di appartenenza per filtrare una lista rispetto a un'altra:

Mantieni solo gli elementi di una lista che non sono in un set noto

seen = {"apple", "cherry"}
candidates = ["apple", "mango", "banana", "cherry", "kiwi"]

new_items = [item for item in candidates if item not in seen]
print(new_items)  # ['mango', 'banana', 'kiwi']

Questo è molto più veloce di if item not in seen_list quando seen è grande.

Convertire un Set in una Lista per l'Accesso Basato su Indice

Quando hai effettivamente bisogno di un accesso posizionale, converti prima il set in una lista. Tieni presente che l'ordine risultante è arbitrario a meno che non si ordini esplicitamente.

Converti un set in una lista ordinata e accedi tramite indice

my_set = {"cherry", "apple", "banana"}
sorted_list = sorted(my_set)     # ['apple', 'banana', 'cherry']
print(sorted_list[0])            # apple
print(sorted_list[-1])           # cherry

sorted() restituisce sempre una nuova lista; il set originale rimane invariato.

Usare any() e all() con i Set

any() e all() funzionano con qualsiasi iterabile, inclusi i set, e consentono di testare condizioni su tutti gli elementi senza scrivere un ciclo esplicito.

Verifica se alcuni o tutti gli elementi soddisfano una condizione

numbers = {2, 4, 6, 8}

print(any(n > 5 for n in numbers))   # True  (6 and 8 are > 5)
print(all(n % 2 == 0 for n in numbers))  # True  (all are even)

Ottenere un Singolo Elemento Arbitrario

Se hai bisogno di un solo elemento e non ti importa quale, puoi usare next() con iter():

Ispeziona un elemento senza modificare il set

my_set = {"apple", "banana", "cherry"}
first = next(iter(my_set))
print(first)  # one of the three fruits — which one is unspecified

Questo è uno schema comune quando si vuole ispezionare un set che si sa non essere vuoto, senza consumarlo o modificarlo.

Riepilogo delle Tecniche di Accesso

TecnicaUsa quando…
for item in my_setDevi visitare ogni elemento
item in my_setDevi verificare l'appartenenza (O(1))
item not in my_setDevi verificare l'assenza
sorted(my_set)[i]Devi avere accesso posizionale (ordina prima)
next(iter(my_set))Hai bisogno di un elemento arbitrario
any() / all()Devi testare una condizione su tutti gli elementi

Capitoli Correlati

Pratica

Pratica
What are the ways to access set items in Python?
What are the ways to access set items in Python?
Was this page helpful?