• Aucun résultat trouvé

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, ...

– 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 st s | t s.union(t)

st 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 st s | t s.union(t)

st 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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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,. . .,n1};

I on cherche ensuitei dansSpouri=0,1,2, . . . ,n1 ;

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 ;

Documents relatifs