Académique Documents
Professionnel Documents
Culture Documents
Remarque: les fonctions intégrées list, tuple et str permettent 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
>>> [id(e) for e in y] # les éléments de la liste y pointent l’adresse de la liste [1,2,3]
>>>x[0] = 9; id(x) # on mute la liste x, on ne la redéfinit pas: adresse inchangée!
>>>y # toutes les composantes de y ont changé en même temps
>>> [id(e) for e in y] # normal car elles pointent la même adresse, où on a maintenant [9,2,3]
[ expression for indice_1 in iterable_1 [if condition_1].........for indice_n in iterable_n [if condition_n] ]
Chacune des conditions est facultative (et la condition n°i s’applique à l’indice n°i).Exemple :
>>> [x*x for x in range(1,100) if x%10 == 3]
>>> [100*i+j for i in range(1,5) for j in range(1,4)]
>>> [[100*i+j for i in range(1,5)] for j in range(1,4)]
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
>>>#Vous pouvez utiliser la fonction intégrée list () pour copier:
>>>new_list = list( t )
>>>#Vous pouvez utiliser copy.copy générique () pour faire une copie superficielle :
>>>import copy
>>>new_list = copy.copy( t )
>>>#Copie profonde (deep copy) avec copy.deepcopy():
>>>import copy
>>>new_list = copy.deepcopy( t )
>>>s[3] = ’info’; t # remplace s[3] ; modification répercutée sur t
>>>dels[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’
Classe : 1ère Année MP, PC, PT Page 2
IPEI EL MANAR Module II : Environnement de développement Python 3 Année universitaire : 2020/2021
Pour trier la liste contenue dans une variable s (reverse=True/False pour inverser l’ordre du tri).
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.
>>> ’abc’ + ’uvwxyz’ ;’abc’ * 5 # concaténation de deux chaînes ; répétition d’une même chaîne
>>>st = ’abxyztcabaabaabcabw’ # définition d’une chaîne
>>> for c in st: print(ord(c),end=’ ’) # boucle d’affichage des codes des caractères
>>>len(st), st[2:5], st[-1] # lecture de caractères par leurs indices
>>>st[::-1] ; (’abc’ in st, ’abcd’ in st, ’ab’ not in st) # inverser l’ordre des caractères ; appartenance ou
non
>>>st.count(’aba’), st.index(’aba’),st.index(’aba’,8) # nbre d’occurrences, 1èreocc,1ère occ à partir de
la position 8
>>>st[2]=’h’ # impossible de modifier un caractère
Voir également la section suivante pour une analyse détaillée de certaines méthodes importantes.
8. Dictionnaires
Les dictionnaires sont des structures mutables, non ordonnées. Les dictionnaires peuvent être formés :
• en évaluant l’expression dict() ou {}. On obtient le dictionnaire vide
• en délimitant une séquence de paires clé :valeur : {clé1:val1, clé2:val2,..., clén:valn}
• en évaluant par exemple : dict([[clé1,val1],[clé2,val2],...,[clén,valn]])
• en ajoutant des paires clé :valeur à un dictionnaire existant.
• en “compréhension”, par exemple D = {x:x*2 for x in range(10)}
Voici quelques méthodes applicables à un objet dic de type dictionnaire. On note ici cle une clé et val une
valeur :
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.
Les objets de type “ensemble” sont mutables. Voici quelques méthodes applicables à un objet e de type
ensemble (set).
>>>e.discard(5) ;e ;e.add(0) ;e ;4 in e # on retire l’élt 5 ;on ajoute l’élt 0 ; on demande si 4 est dans
l’ensemble
Les objets de type “ensemble” ont des méthodes pour les opérations ensemblistes usuelles :
Voici quelques exemples (on voit que l’ordre des éléments d’un ensemble est imprévisible) :