W3docs

Accéder aux éléments d'un ensemble

Apprenez à accéder aux éléments d'un ensemble Python par itération, test d'appartenance et conversion, avec des exemples clairs.

Les ensembles Python sont des collections non ordonnées d'éléments uniques. Comme les ensembles ne garantissent aucun ordre, ils ne prennent pas en charge l'indexation, le découpage ni aucun autre accès de type séquence. Ce chapitre couvre toutes les techniques pratiques pour lire des éléments d'un ensemble : itération, test d'appartenance, conversion en liste, et quelques schémas réels illustrant pourquoi chaque approche est utile.

Pourquoi vous ne pouvez pas indexer un ensemble

Tenter d'accéder à un élément d'un ensemble par sa position lève immédiatement une TypeError :

L'indexation d'un ensemble lève une TypeError

python— editable, runs on the server

C'est voulu. Les ensembles stockent leurs éléments dans une table de hachage, et non dans une séquence, il n'existe donc pas de « première » ou de « deuxième » position stable. L'ordre que vous observez en affichant un ensemble peut changer entre les versions de Python et même d'une exécution à l'autre.

Itérer sur un ensemble

La façon habituelle de parcourir chaque élément est une boucle for. Comme l'ordre n'est pas garanti, les éléments peuvent apparaître dans n'importe quel ordre à chaque exécution de la boucle.

Itérer sur chaque élément d'un ensemble

python— editable, runs on the server

Résultat typique (l'ordre peut varier) :

cherry
banana
apple

Collecter des résultats pendant l'itération

Vous pouvez construire une nouvelle liste de valeurs transformées pendant l'itération :

Construire une liste de fruits en majuscules à partir d'un ensemble

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

La compréhension de liste fonctionne car elle demande à l'ensemble de fournir un élément à la fois — aucun index n'est requis.

Test d'appartenance avec in et not in

Le moyen le plus rapide et le plus courant de vérifier si une valeur existe dans un ensemble est l'opérateur in. Comme les ensembles reposent sur une table de hachage, cette vérification s'exécute en temps moyen O(1) — bien plus rapide que de parcourir une liste.

Vérifier si un élément est dans un ensemble

python— editable, runs on the server

Utilisez not in pour tester l'absence :

Vérifier si un élément est absent d'un ensemble

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

Exemple pratique : dédupliquer et filtrer une liste

Un schéma courant combine les ensembles et le test d'appartenance pour filtrer une liste par rapport à une autre :

Conserver uniquement les éléments d'une liste qui ne figurent pas dans un ensemble connu

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

C'est beaucoup plus rapide que if item not in seen_list lorsque seen est grand.

Convertir un ensemble en liste pour un accès par index

Lorsque vous avez réellement besoin d'un accès positionnel, convertissez d'abord l'ensemble en liste. Gardez à l'esprit que l'ordre résultant est arbitraire, sauf si vous triez explicitement.

Convertir un ensemble en liste triée et accéder par index

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

sorted() renvoie toujours une nouvelle liste ; l'ensemble d'origine est inchangé.

Utiliser any() et all() avec des ensembles

any() et all() fonctionnent avec tout itérable, y compris les ensembles, et vous permettent de tester des conditions sur tous les éléments sans écrire de boucle explicite.

Tester si certains ou tous les éléments satisfont une condition

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)

Obtenir un élément arbitraire unique

Si vous avez juste besoin d'un élément et que vous ne vous souciez pas duquel il s'agit, vous pouvez utiliser next() avec iter() :

Consulter un élément sans modifier l'ensemble

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

C'est un schéma courant lorsque vous devez inspecter un ensemble dont vous savez qu'il n'est pas vide, sans le consommer ni le modifier.

Récapitulatif des techniques d'accès

TechniqueÀ utiliser quand…
for item in my_setVous devez parcourir chaque élément
item in my_setVous devez vérifier l'appartenance (O(1))
item not in my_setVous devez vérifier l'absence
sorted(my_set)[i]Vous avez besoin d'un accès positionnel (tri préalable)
next(iter(my_set))Vous avez besoin d'un élément arbitraire
any() / all()Vous devez tester une condition sur tous les éléments

Chapitres connexes

Pratique

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