« Programmation Python/Ensembles » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 7 :
 
Exemple :
<sourcesyntaxhighlight lang="python">
set1 = set() # Nouvel ensemble vide
set1.add("cat") # Ajout d'un membre
Ligne 36 :
set8.clear() # Effacement d'un ensemble
print(set1, set2, set3, set4, set5, set6, set7, set8, issubset, issuperset)
</syntaxhighlight>
</source>
 
==Construction d'ensembles ==
 
Une première méthode consiste à fournir un objet séquentiel en paramètre :
<sourcesyntaxhighlight lang="python">
>>> set([0, 1, 2, 3])
set([0, 1, 2, 3])
Ligne 47 :
>>> set("obtuse")
set(['b', 'e', 'o', 's', 'u', 't'])
</syntaxhighlight>
</source>
 
Ajout de chaque membre un par un :
<sourcesyntaxhighlight lang="python">
>>> s = set([12, 26, 54])
>>> s.add(32)
>>> s
set([32, 26, 12, 54])
</syntaxhighlight>
</source>
 
Ajout de groupes de membres :
<sourcesyntaxhighlight lang="python">
>>> s.update([26, 12, 9, 14])
>>> s
set([32, 9, 12, 14, 54, 26])
</syntaxhighlight>
</source>
 
{{remarque|si on ajoute un doublon avec "add()" ou "update()", cela n'a aucun effet.}}
 
Ajout par copie d'un autre ensemble :
<sourcesyntaxhighlight lang="python">
>>> s2 = s.copy()
>>> s2
set([32, 9, 12, 14, 54, 26])
</syntaxhighlight>
</source>
 
== Recherche de membre ==
 
Pour chercher si un élément existe dans un ensemble, on utilise "in" :
<sourcesyntaxhighlight lang="python">
>>> 32 in s
True
Ligne 83 :
>>> 6 not in s
True
</syntaxhighlight>
</source>
 
Si un sous-ensemble existe dans un ensemble, c'est "issubset()" :
<sourcesyntaxhighlight lang="python">
>>> s.issubset(set([32, 8, 9, 12, 14, -4, 54, 26, 19]))
True
</syntaxhighlight>
</source>
 
Si un sur-ensemble contient un ensemble, c'est "issuperset()" :
<sourcesyntaxhighlight lang="python">
>>> s.issuperset(set([9, 12]))
True
Ligne 101 :
# Équivalent à :
>>> s >= [9, 12]
</syntaxhighlight>
</source>
 
== Retrait de membre ==
Ligne 111 :
# "clear" : retire tous les éléments.
 
<sourcesyntaxhighlight lang="python">
>>> s = set([1,2,3,4,5,6])
>>> s.pop()
Ligne 130 :
>>> s
set([])
</syntaxhighlight>
</source>
 
== Itération des ensembles ==
Les éléments n'étant pas ordonnés, il n'y a qu'une boucle possible :
<sourcesyntaxhighlight lang="python">
>>> s = set("blerg")
>>> for n in s:
Ligne 140 :
...
r b e l g
</syntaxhighlight>
</source>
 
== Opérations sur les ensembles ==
Ligne 151 :
Les éléments communs à deux ensembles.
 
<sourcesyntaxhighlight lang="python">
>>> s1 = set([4, 6, 9])
>>> s2 = set([1, 6, 8])
Ligne 162 :
>>> s1
set([6])
</syntaxhighlight>
</source>
 
=== Union ===
Ligne 168 :
Somme des éléments de deux ensembles.
 
<sourcesyntaxhighlight lang="python">
>>> s1 = set([4, 6, 9])
>>> s2 = set([1, 6, 8])
Ligne 175 :
>>> s1 | s2
set([1, 4, 6, 8, 9])
</syntaxhighlight>
</source>
 
=== Différence symétrique ===
Ligne 181 :
<nowiki>Éléments contenu dans un seul ensemble à la fois, parmi deux. autrement : [ l'union des deux #set] -[l'intersection]</nowiki>
 
<sourcesyntaxhighlight lang="python">
>>> s1 = set([4, 6, 9])
>>> s2 = set([1, 6, 8])
Ligne 192 :
>>> s1
set([8, 1, 4, 9])
</syntaxhighlight>
</source>
 
=== Différence ===
Ligne 198 :
Éléments non contenu dans un des deux ensembles.
 
<sourcesyntaxhighlight lang="python">
>>> s1 = set([4, 6, 9])
>>> s2 = set([1, 6, 8])
Ligne 209 :
>>> s1
set([9, 4])
</syntaxhighlight>
</source>
 
== Opérations non binaires ==
Ligne 221 :
 
Exemple :
<sourcesyntaxhighlight lang="python">
>>> s1 = set([3, 6, 7, 9])
>>> s2 = set([6, 7, 9, 10])
Ligne 233 :
>>> s1.intersection(s2,s3)
set([9, 7])
</syntaxhighlight>
</source>
 
==frozenset==
Ligne 240 :
De plus, ils sont hachables, ce qui leur permet de faire partie d'ensembles.
 
<sourcesyntaxhighlight lang=python>
>>> fs = frozenset([2, 3, 4])
>>> s1 = set([fs, 4, 5, 6])
Ligne 252 :
File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
</syntaxhighlight>
</source>
 
Les instructions suivantes montrent que les méthodes modificatrices sont absentes de la classe frozenset :
 
<sourcesyntaxhighlight lang=python>
>>> set(dir(set)) - set(dir(frozenset))
{'__iand__', 'pop', 'add', '__isub__', 'clear', '__ior__', 'discard', 'update', '__ixor__', 'intersection_update', 'difference_update', 'symmetric_difference_update', 'remove'}
>>> set(dir(frozenset)) - set(dir(set))
set()
</syntaxhighlight>
</source>
 
== Exercices ==