oujood.com

Les collections de type set

Dans ce tutoriel, nous allons connaître le type Set de Python et comment l'utiliser efficacement.
Un set (ensemble) de Python est une liste non ordonnée d'éléments immuables. Ce qui veut dire :
Les éléments d'un set ne sont pas ordonnés.
Les éléments d'un set sont uniques. Un set ne permet pas de dupliquer des éléments.
Les éléments d'un set ne peuvent pas être modifiés. Par exemple, ils peuvent être des nombres, des chaînes de caractères et des tuples, mais pas des listes ou des dictionnaires.

chercher |

Introduction au type Set de Python

Pour définir un set en Python, vous utilisez l'accolade {}. Par exemple :

competence = {"Programmation Python", "Bases de données", "Conception de logiciels"}

Notez qu'un dictionnaire utilise également des accolades, mais ses éléments sont des paires clé-valeur.
Pour définir un set vide, vous ne pouvez pas utiliser les accolades comme ceci :

ensemble_vide = {}

Car cela définit un dictionnaire vide.
Par conséquent, vous devez utiliser la fonction intégrée set() comme suit:

empty_set = set()

On peut en effet passer un itérable à la fonction set() pour créer un set. Par exemple, vous pouvez passer une liste, qui est un itérable, à la fonction set() comme ceci :

  Copier le code

competences = set(['Résolution de problèmes', 'Esprit critique'])
print(competences)
ce code retourne : {'Esprit critique', 'Résolution de problèmes'}
Vous constatez que l'ordre original des éléments peut ne pas être préservé.
Si un itérable comporte des éléments en double, la fonction set() les supprimera. Par exemple :

  Copier le code

characters = set( 'lettres')
print( characters)
Dans cet exemple, la chaîne de caractères "lettres" contient deux caractères e et deux t , la méthode set() les a supprimés.

Comment connaître la taille d'un set ?

Pour obtenir le nombre d'éléments d'un set, vous utilisez la fonction intégrée len().
len(set)
Par exemple:

  Copier le code

notes = {20, 17, 13, 14, 15}
taille = len(notes)
print(taille)

Comment vérifier si un élément se trouve dans un set ?

Pour vérifier si un set contient un élément, on utilise l'opérateur in :
element in set
L'opérateur in renvoie True si le set contient l'élément. Sinon, il renvoie False.
Par exemple:

  Copier le code

notes = {20, 17, 13, 14, 15}
note = 17
if note in notes :
    print(f"Le set contient l'élément : {note}")
Pour inverser l'opérateur in, on utilise l'opérateur not.
not in set
Par exemple :

  Copier le code

notes = {20, 17, 13, 14, 15}
note = 19
if note not in notes :
    print(f"Le set ne contient pas l'élément : {note}")

Comment ajouter des éléments à un set ?

La méthode add() permet d'ajouter un élément à un set :
set.add(élément)
Par exemple :

  Copier le code

notes = {20, 17, 13, 14, 15}
notes.add(19)
print(notes)

Supprimer un élément d'un set

Pour supprimer un élément d'un set, on utilise la méthode remove() :
set.remove( element)
Par exemple :

  Copier le code

notes = {20, 17, 13, 14, 15}
notes.remove(17)
print(notes)
Si on supprime un élément qui n'existe pas dans un set, on obtient une erreur (KeyError).
Pour éviter cette erreur, il faut utiliser l'opérateur in pour vérifier si un élément fait partie du set avant de le supprimer :
Par exemple:

  Copier le code

notes = {20, 17, 13, 14, 15}
if 19 in notes:
    notes.remove(19)
    print(notes)
Pour rendre les choses plus pratiques, le set dispose de la méthode discard() qui permet de supprimer un élément. Et elle ne provoque pas d'erreur si l'élément ne se trouve pas dans le set :
set.discard(element)
Parexemple:

  Copier le code

notes = {20, 17, 13, 14, 15}
notes.discard(19)
print(notes)

supprimer et récupérer un élément d'un set

Pour retirer et renvoyer un élément d'un set, vous utilisez la méthode pop().
Puisque les éléments d'un set n'ont pas d'ordre spécifique, la méthode pop() supprime un élément non spécifié d'un set.
Si vous exécutez le code suivant plusieurs fois, il se peut qu'il affichera une valeur différente à chaque fois :

  Copier le code

competences = {'Résolution de problèmes', 'Conception de logiciels', 'Programmation Python'}
competence = competences.pop()

print(competence)

Suppression de tous les éléments d'un set

Pour supprimer tous les éléments d'un set, vous utilisez la méthode clear() :
set.clear()
Par exemple:

  Copier le code

competences = {'Résolution de problèmes', 'Conception de logiciels', 'Programmation Python'}
competences.clear()

print(competences)

Geler un set

Pour rendre un set immuable, on utilise la fonction intégrée appelée frozenset(). La fonction frozenset() retourne un nouveau set invariable à partir d'un set existant.
Par exemple:

  Copier le code

competences = {'Résolution de problèmes', 'Conception de logiciels', 'Programmation Python'}
competences = frozenset(competences)
Après cela, si vous tentez de modifier des éléments du set, vous obtiendrez une erreur :

competences.add('développement java')

Boucle sur les éléments d'un set

Boucle en utilisant for

Un set étant un itérable, vous pouvez utiliser une boucle for pour parcourir ses éléments.
Par exemple

  Copier le code

competences = {'Résolution de problèmes', 'Conception de logiciels', 'Programmation Python'}
for competences in competences :
    print(competences)

Voir plus sur les boucles dans notre tutoriel

Pour accéder à l'index de l'élément actuel à l'intérieur de la boucle, vous pouvez utiliser la fonction intégrée enumerate() :

  Copier le code

competences = {'Résolution de problèmes', 'Conception de logiciels', 'Programmation Python'}

for index, competences in enumerate(competences) :
    print(f"{index}.{competences}")
Par défaut, l'index commence à zéro. Pour changer cela, vous passez la valeur de départ au deuxième argument de la fonction enumerate().
Par exemple :

  Copier le code

competences = {'Résolution de problèmes', 'Conception de logiciels', 'Programmation Python'}
for index, competence in enumerate(competences, 1) :
	print(f"{index}. {competence}")

Introduction à la compréhension des sets en Python

Supposons que vous ayez le set suivant, composé de trois balises :
balises = {'Tigre', 'Pandas', 'Eléphant'} Pour convertir les balises du set en un autre set de balises en minuscules, vous pouvez utiliser la boucle for suivante :

  Copier le code

balises = {'Tigre', 'Pandas', 'Eléphant'}

balises_minuscules = set()
for balise in balises :
    balises_minuscules.add(balise.lower())

print(balises_minuscules)
Comment cela fonctionne? :
Premièrement, itérer sur chaque élément du set de balises.
Ensuite, convertir chaque balise en minuscule et l'ajouter au nouveau set (balises_minuscules).
Ou vous pouvez utiliser la fonction intégrée map() avec une expression lambda :

  Copier le code

balises = {'Tigre', 'Pandas', 'Eléphant'}
balises_minuscules = set(map(lambda balise: balise.lower(), balises))
print(balises_minuscules)
Ou vous pouvez utiliser la fonction intégrée map() avec une expression lambda :

  Copier le code

balises = {'Tigre', 'Pandas', 'Eléphant'}
balises_minuscules=set(map(lambda balise: balise.lower(), balises))
print(balises_minuscules)
La fonction map() renvoie un objet map de sorte que vous devez utiliser la fonction set() pour le convertir en un set.
Pour rendre le code plus concis, Python vous fournit la syntaxe de compréhension de set comme suit :

{expression for l'élément in set if condition}

La compréhension d'un set vous permet de créer un nouveau set à partir d'un set existant.
Une compréhension de set comporte les étapes suivantes :
  1. itérer sur les éléments d'un set.
  2. appliquer une expression à chaque élément
  3. créer un nouveau set d'éléments résultant de l'expression.
En outre, l'interprétation d'un set vous permet de sélectionner l'élément auquel appliquer l'expression via une condition dans la clause if.
Notez que la compréhension de set renvoie un nouveau set, elle ne modifie pas le set original.
Pour revenir à l'exemple précédent, vous pouvez convertir toutes les balises de l'ensemble de balises en utilisant l'interprétation set suivante :

  Copier le code

balises = {'Tigre', 'Pandas', 'Eléphant'}
balises_minuscules={balise.lower() for balise in balises}
print(balises_minuscules)
Cette syntaxe semble définitivement plus concise qu'une boucle for et plus élégante que la fonction map().
Exemple de compréhension de set en Python avec une clause if.
Supposons que vous souhaitiez convertir tous les éléments du set de balises en minuscules, à l'exception du Numpy.
Pour ce faire, vous pouvez ajouter une condition à la compréhension du set comme ceci :

  Copier le code

balises = {'Tigre', 'Pandas', 'Eléphant'}
new_balises = {balise.lower() for balise in balises if balise != 'Pandas'}
print(new_balises)

Joindre deux sets

Il existe plusieurs façons de joindre deux ou plusieurs sets en Python.
Vous pouvez utiliser la méthode union() qui renvoie un nouvel ensemble contenant tous les éléments des deux ensembles, ou la méthode update() qui insère tous les éléments d'un ensemble dans un autre :
Exemple La méthode union() renvoie un nouveau set contenant tous les éléments des deux sets :

  Copier le code

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set3 = set1.union(set2)
print(set3)
Exemple La méthode update() insère les éléments du set2 dans le set1 :

  Copier le code

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set1.update(set2)
print(set1)

Remarque : Les fonctions union() et update() excluent les éléments en double.

Python Intersection de sets

En Python, vous pouvez utiliser la méthode set intersection() ou l'opérateur set intersection (&) pour intersecter deux ensembles ou plus :

  Copier le code

new_set = set1.intersection(set2, set3)
nouvel_ensemble = ensemble1 & ensemble2 & ensemble3
La méthode intersection() et l'opérateur & ont les mêmes fonctionnalités.
Lors de l'intersection de deux ou plusieurs sets, vous obtenez un nouveau set composé d'éléments qui existent dans tous les sets.
Exemple: Supposons que vous ayez les deux sets suivants s1 et s2 :

  Copier le code

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++' }
# L'intersection de ces deux sets donne un nouveau set qui contient deux éléments 'Java' et 'C++' :
s = {'Java', 'C++'}
Ce sont les éléments qui existent dans les deux sets.
L'intersection de set a de nombreuses applications utiles.
Par exemple:
* Trouver les favoris communs de deux amis sur une application de réseau social.
Rechercher les compétences communes de deux ou plusieurs employés sur une application RH.

En Python, vous pouvez intersecter deux ensembles ou plus à l'aide de la méthode set intersection() ou de l'opérateur set intersection (&).

Voir aussi nos tutoriel :

Les boucles de js

Les boucles de js

fonction mktime

Renvoie le timestamp d'Unix pour une date

fonction print

Affiche une chaîne de caractères