I Lessetse d ´eclarent comme les listes, mais avec des accolades :
>>> S = {3, 1, 4, 6, 2}
I Ou `a l’aide de la fonctionset(iterable), aussi utile pour le transtypage :
>>> S = set([3, 1, 4, 6, 2])
>>> ensemble_vide = set()
I Comme ce sont des it ´erables, on peut utiliserinetlen comme pour les chaˆınes, les tuples, les listes, ...
– Utilisation des set –
I Lessetse d ´eclarent comme les listes, mais avec des accolades :
>>> S = {3, 1, 4, 6, 2}
I Ou `a l’aide de la fonctionset(iterable), aussi utile pour le transtypage :
>>> S = set([3, 1, 4, 6, 2])
>>> ensemble_vide = set()
I Comme ce sont des it ´erables, on peut utiliserinetlen comme pour les chaˆınes, les tuples, les listes, ...
– Utilisation des set –
I Lessetse d ´eclarent comme les listes, mais avec des accolades :
>>> S = {3, 1, 4, 6, 2}
I Ou `a l’aide de la fonctionset(iterable), aussi utile pour le transtypage :
>>> S = set([3, 1, 4, 6, 2])
>>> ensemble_vide = set()
I Comme ce sont des it ´erables, on peut utiliserinetlen comme pour les chaˆınes, les tuples, les listes, ...
– Utilisation des set –
I Lessetse d ´eclarent comme les listes, mais avec des accolades :
>>> S = {3, 1, 4, 6, 2}
I Ou `a l’aide de la fonctionset(iterable), aussi utile pour le transtypage :
>>> S = set([3, 1, 4, 6, 2])
>>> ensemble_vide = set()
I Comme ce sont des it ´erables, on peut utiliserinetlen comme pour les chaˆınes, les tuples, les listes, ...
– Utilisation des set –
I Lessetse d ´eclarent comme les listes, mais avec des accolades :
>>> S = {3, 1, 4, 6, 2}
I Ou `a l’aide de la fonctionset(iterable), aussi utile pour le transtypage :
>>> S = set([3, 1, 4, 6, 2])
>>> ensemble_vide = set()
I Comme ce sont des it ´erables, on peut utiliserinetlen comme pour les chaˆınes, les tuples, les listes, ...
– Op ´erations ensemblistes –
I Les op ´erations que vous connaissez sur les ensembles sont disponibles :
math python M ´ethode s∪t s | t s.union(t)
s∩t s & t s.intersection(t)
s\t s - t s.difference(t)
s∆t s ˆ t s.symmetric_difference(t)
I Ces m ´ethodes ne modifient nis, nit; si c’est votre but : Op ´eration M ´ethode
s = s | t s.update(t)
s = s & t s.intersection_update(t)
s = s - t s.difference_update(t)
s = s ˆ t s.symmetric_difference_update(t)
– Op ´erations ensemblistes –
I Les op ´erations que vous connaissez sur les ensembles sont disponibles :
math python M ´ethode s∪t s | t s.union(t)
s∩t s & t s.intersection(t)
s\t s - t s.difference(t)
s∆t s ˆ t s.symmetric_difference(t)
I Ces m ´ethodes ne modifient nis, nit; si c’est votre but : Op ´eration M ´ethode
s = s | t s.update(t)
s = s & t s.intersection_update(t)
– Autres m ´ethodes modifiant les ensembles –
I Les autres m ´ethodes suivantes permettent de modifier les ensembles :
I s.add(x)ajoutex `as;
I s.remove(x)retirexdessisle contient — sinon, elle provoque une erreur ;
I s.discard(x)retirexdessans erreur sisne le contient pas.
I enfin,s.pop()(sans param `etre) retire et renvoie un
´el ´ement al ´eatoire dess’il n’est pas vide — sinon, elle provoque une erreur.
– Comparaison d’ensembles –
I On peut aussi comparer les ensembles `a l’aide des op ´erateurs suivants :
math python s=t s == t s6=t s != t s⊂t s < t s⊆t s <= t s⊃t s > t s⊇t s >= t
– frozenset –
I Lesfrozensetsont des ensembles non-modifiables ;
I Ils sont principalement utiles quand on veut repr ´esenter des collections d’ensembles ;
Exemple (sous-ensembles de{1, 2, 3}de taille 2)
>>> S = set([{1, 2}, {1, 3}, {2, 3}])
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set'
>>> S = set([frozenset([1, 2]), frozenset([1, 3]),
frozenset([2, 3])])
>>> S
{frozenset({1, 3}), frozenset({1, 2}), frozenset({2, 3})}
– frozenset –
I Lesfrozensetsont des ensembles non-modifiables ;
I Ils sont principalement utiles quand on veut repr ´esenter des collections d’ensembles ;
Exemple (sous-ensembles de{1, 2, 3}de taille 2)
>>> S = set([{1, 2}, {1, 3}, {2, 3}])
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set'
>>> S = set([frozenset([1, 2]), frozenset([1, 3]),
frozenset([2, 3])])
>>> S
{frozenset({1, 3}), frozenset({1, 2}), frozenset({2, 3})}
– frozenset –
I Lesfrozensetsont des ensembles non-modifiables ;
I Ils sont principalement utiles quand on veut repr ´esenter des collections d’ensembles ;
Exemple (sous-ensembles de{1, 2, 3}de taille 2)
>>> S = set([{1, 2}, {1, 3}, {2, 3}])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
>>> S = set([frozenset([1, 2]), frozenset([1, 3]),
frozenset([2, 3])])
>>> S
{frozenset({1, 3}), frozenset({1, 2}), frozenset({2, 3})}
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s
I ⇒si vous n’avez pas besoin de doublons, d’ordre ou de positions : lessetsont pr ´ef ´erables ;
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s I ⇒si vous n’avez pas besoin de doublons, d’ordre ou de
positions : lessetsont pr ´ef ´erables ;
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s I ⇒si vous n’avez pas besoin de doublons, d’ordre ou de
positions : lessetsont pr ´ef ´erables ;
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s I ⇒si vous n’avez pas besoin de doublons, d’ordre ou de
positions : lessetsont pr ´ef ´erables ;
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s I ⇒si vous n’avez pas besoin de doublons, d’ordre ou de
positions : lessetsont pr ´ef ´erables ;
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s
I ⇒si vous n’avez pas besoin de doublons, d’ordre ou de positions : lessetsont pr ´ef ´erables ;
– Test d’efficacit ´e –
I Autre int ´er ˆet desset: beaucoup plus rapides que les listes !
I Dans le programme ci-dessous :
I on cr ´ee un it ´erableScontenant{0, 1, 2,. . .,n−1};
I on cherche ensuitei dansSpouri=0,1,2, . . . ,n−1 ;
I on compare le temps total mis pour les recherches ;
$ python3 rechercheiterables.py
Temps pour 40000 recherches dans un set: 0.0019 s Temps pour 40000 recherches dans une list: 7.1033 s Temps pour 40000 recherches dans un tuple: 7.1092 s Temps pour 40000 recherches dans un frozenset: 0.0016 s
Python pas `a pas
Les dictionnaires
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais :
1. les indices peuvent ˆetre autre chose que des naturels ; 2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966" }
cl ´es valeurs
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais : 1. les indices peuvent ˆetre autre chose que des naturels ;
2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966" }
cl ´es valeurs
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais : 1. les indices peuvent ˆetre autre chose que des naturels ; 2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966" }
cl ´es valeurs
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais : 1. les indices peuvent ˆetre autre chose que des naturels ; 2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966" }
cl ´es valeurs
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais : 1. les indices peuvent ˆetre autre chose que des naturels ; 2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966"
}
cl ´es valeurs
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais : 1. les indices peuvent ˆetre autre chose que des naturels ; 2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966"
} cl ´es
valeurs
– Dictionnaires –
I Lesdictionnairessont comme les listes, mais : 1. les indices peuvent ˆetre autre chose que des naturels ; 2. il n’y a pas d’ordre ;
I Ces indices sont appel ´es descl ´es, et on leur associe des valeurs;
I On peut les d ´eclarer avec la syntaxe suivante :
clients = {
"Jean Dupont": "19/01/1985",
"Anne Dubois": "27/04/1966"
} cl ´es valeurs
– Dictionnaires : exemple d’utilisation –
Exemple
D = dict() # dictionnaire vide
D['toto'] = 4 # associe 4 a la cle 'toto' D['titi'] = 6
print(D['toto']) # affiche 4 D['toto'] = 'bonjour' # remplace 4 print(D['toto']) # affiche 'bonjour' print(D)
La cl ´e doit ˆetre un ´el ´ementnon modifiable
– Dictionnaires : acc `es aux ´el ´ements –
I Les m ´ethodes suivantes du dictionnairedicopermettent d’acc ´eder :
1. aux cl ´es :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();
Exemple
>>> dico = {"une cl´e": "une valeur",
"une autre cl´e": "une autre valeur"}
>>> dico.keys()
dict_keys(['une cl´e', 'une autre cl´e'])
>>> dico.values()
dict_values(['une valeur', 'une autre valeur'])
>>> dico.items()
dict_items([('une cl´e', 'une valeur'),
('une autre cl´e', 'une autre valeur')]) I Comme toujours, on peut transtyper le r ´esultat ;
– Dictionnaires : acc `es aux ´el ´ements –
I Les m ´ethodes suivantes du dictionnairedicopermettent d’acc ´eder :
1. aux cl ´es :dico.keys();
2. aux valeurs :dico.values(); 3. aux deux :dico.items();
Exemple
>>> dico = {"une cl´e": "une valeur",
"une autre cl´e": "une autre valeur"}
>>> dico.keys()
dict_keys(['une cl´e', 'une autre cl´e'])
>>> dico.values()
dict_values(['une valeur', 'une autre valeur'])
>>> dico.items()
dict_items([('une cl´e', 'une valeur'),
('une autre cl´e', 'une autre valeur')]) I Comme toujours, on peut transtyper le r ´esultat ;
– Dictionnaires : acc `es aux ´el ´ements –
I Les m ´ethodes suivantes du dictionnairedicopermettent d’acc ´eder :
1. aux cl ´es :dico.keys(); 2. aux valeurs :dico.values();
3. aux deux :dico.items();
Exemple
>>> dico = {"une cl´e": "une valeur",
"une autre cl´e": "une autre valeur"}
>>> dico.keys()
dict_keys(['une cl´e', 'une autre cl´e'])
>>> dico.values()
dict_values(['une valeur', 'une autre valeur'])
>>> dico.items()
dict_items([('une cl´e', 'une valeur'),
('une autre cl´e', 'une autre valeur')]) I Comme toujours, on peut transtyper le r ´esultat ;
– Dictionnaires : acc `es aux ´el ´ements –
I Les m ´ethodes suivantes du dictionnairedicopermettent d’acc ´eder :
1. aux cl ´es :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();
Exemple
>>> dico = {"une cl´e": "une valeur",
"une autre cl´e": "une autre valeur"}
>>> dico.keys()
dict_keys(['une cl´e', 'une autre cl´e'])
>>> dico.values()
dict_values(['une valeur', 'une autre valeur'])
>>> dico.items()
dict_items([('une cl´e', 'une valeur'),
('une autre cl´e', 'une autre valeur')]) I Comme toujours, on peut transtyper le r ´esultat ;
– Dictionnaires : acc `es aux ´el ´ements –
I Les m ´ethodes suivantes du dictionnairedicopermettent d’acc ´eder :
1. aux cl ´es :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();
Exemple
>>> dico = {"une cl´e": "une valeur",
"une autre cl´e": "une autre valeur"}
>>> dico.keys()
dict_keys(['une cl´e', 'une autre cl´e'])
>>> dico.values()
dict_values(['une valeur', 'une autre valeur'])
>>> dico.items()
dict_items([('une cl´e', 'une valeur'),
I Comme toujours, on peut transtyper le r ´esultat ;
– Dictionnaires : acc `es aux ´el ´ements –
I Les m ´ethodes suivantes du dictionnairedicopermettent d’acc ´eder :
1. aux cl ´es :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();
Exemple
>>> dico = {"une cl´e": "une valeur",
"une autre cl´e": "une autre valeur"}
>>> dico.keys()
dict_keys(['une cl´e', 'une autre cl´e'])
>>> dico.values()
dict_values(['une valeur', 'une autre valeur'])
>>> dico.items()
dict_items([('une cl´e', 'une valeur'),
('une autre cl´e', 'une autre valeur')]) Comme toujours, on peut transtyper le r ´esultat ;