Cours TP3
Cours TP3
Cours TP3
Remarque: les fonctions intégrées list, tupleetstrpermettent de passer d’un type de séquence à l’autre :
>>> s = [1,[2,3],"abc"] ; str(s) ; tuple(s) ; # une liste ,on la transforme en chaîne et en tuple
>>> t = ("xyz",(1,3.14),[0,2]) ; str(t) ; list(t) ; # un tuple, on le transforme en chaîne et en liste
>>> c = "abcdef" ;list(c) ; tuple(c) ; # une chaîne, on la transforme en une liste et en tuple de ses caractères
2. Séquences mutables ou non
Il y a une différence entre les listes d’une part, et les chaînes et tuples de l’autre : les listes sont dites mutables,mais les
chaînes et les tuples ne le sont pas.Un objet est mutable : on peut modifier un (ou plusieurs) élément(s), sanspour autant
créer une nouvelle référence vers l’objet ainsi modifié (l’adresse du début reste inchangée).
Considérons l’exemple suivant :
Attention : la plupart des instructions précédentes renvoient la valeur None mais mutent la liste (sans changer son
adresse).
>>> s = t = list(range(10,20)); t # place dans s et t la même liste (même adresse!)
>>> u = s.copy(); u # met dans u une copie indépendante de l’original
>>>s[3] = ’info’; t # remplace s[3] ; modification répercutée sur t
>>>del s[3]; t # supprime s[3] ; modification répercutée sur t
>>>s.insert(3,0); t # insère 0 en position 3 dans s (idem dans t)
>>>s[1:9:2] # lit une coupe de longueur 4 dans s
>>>s[1:9:2] = ’abcd’; t # remplace ces 4 élts par ceux de ’abcd’
>>>dels[1:5]; t # efface les éléments de positions 1 à 4
>>>s.append(’xyz’); t # ajoute l’objet ’xyz’ à la fin de la liste
>>>s.extend(’uvw’); t # complète la liste par les éléments de ’uvw’
>>>s.pop(5) # renvoie s[5], et le supprime de la liste
>>>s.remove(16); t ;s.reverse(); t # supprime la première occurence de la valeur 16 , inverse la liste s
>>>u # pendant ce temps-là, l’original n’a pas changé
Pour trier la liste contenue dans une variable s (reverse=True/False pour inverser l’ordre du tri).
>>>L = [831, 348, 562, 879, 130, 886, 756, 355]; L
>>>sorted(L);L # renvoie la liste triée mais l’original n’a pas été modifié
>>>L.sort(); L # ici le tri s’effectue sur place
5. Les tuples
Les tuples sont des séquences non mutables d’objets. Les tuples peuvent être formés :
• en évaluant l’expression tuple() ou (). On obtient le tuple vide.
• en combinant des éléments (elt0, elt1,..., eltn), ou en convertissant une séquence par tuple(seq).
• en “compréhension”, par la syntaxe plus générale suivante
>>>tuple( expression for indice_1 in iterable_1 [if condition_1].............for indice_n in iterable_n [if condition_n] )
Quelques remarques :
• Les parenthèses aux extrémités sont facultatives (l’important, ce sont les virgules).
• Pour former un tuple à un seul élément, il faut faire suivre cet élément d’une virgule.
• Les opérations sur les séquences non mutables s’appliquent aux tuples.
Voici un exemple (très simple !) de dictionnaire (les clés sont des noms, les valeurs des âges...) :
>>>ages = {'Paul':41, 'Léon':25, 'Jeanne':134} ;ages # un dict de trois entrées ;l'ordre affiché est non prévisible
>>> 'Paul' in ages, 'Jean' in ages ; ages['Jeanne'] # teste la présence de deux clés ; demander l’âge de Jean
>>>ages['Marc'] = 33 ; delages['Paul'] ;ages # crée un nouvel enregistrement ; supprime un enregistrement
>>> for elt in ages: print(elt) # itérer un dictionnaire, c’est itérer les clés
>>>ages.items() ; list(ages)# voici comment itérer sur les paires (clé,valeur) ; la conversion ne donne ici que les
clés
>>>list(ages.keys()) ; list(ages.values()) # autre façon d’obtenir la liste des clés ; la liste des valeurs
>>>max(ages.values()) # la valeur maximum
>>> [(n,a) for n,a in ages.items()] # voici la liste des enregistrements
9. Ensembles
Un ensemble peut contenir des valeurs de type quelconque.Les éléments d’un objet de type ensemble ne sont pas
ordonnés (on ne peut pasy accéder par un indice).On forme un ensemble en utilisant le constructeur set.
>>> e = {1,5,2,3,2,7,5,2,1,3,2} # forme un ensemble par une séquence de valeurs entre f et g
>>> e = set([1,5,2,3,2,7,5,2,1,3,2]) # même résultat en convertissant une liste
>>>e # dans un ensemble, tous les doublons ont été éliminés
>>>set(’abracadabra’) # l’ensemble des caractères distincts d’une chaîne
Les objets de type “ensemble” sont mutables. Voici quelques méthodes applicables à un objet ens de type ensemble
(set).
Voici quelques exemples (on voit que l’ordre des éléments d’un ensemble est imprévisible) :
>>> m3=set(range(0,50,3)); m5=set(range(0,50,5)); m7=set(range(0,50,7))
>>>m3 ; m5 ; m7# les multiples de 3, 5 et 7 dans l’intervalle [0,50[
>>> m5 | m7 ; m3 - m7 ;m3 ^ m5 ; m3 & m5#union m5 ou m7 ;m3 qui ne sont pas m7 ;les m3 ou m5 ;les m3 et
de m5