Chapitre 4 : Tableaux et chaînes de caractères I. Structure de tableau 1. Généralités Notion de tableau Un tableau est une suite de valeurs stockées dans des cases mémoire contiguës. La particularité d une structure de tableau est que le contenu de la i-ème case peut être lu ou modifié en temps constant. Définition d un tableau en extension En Python, on peut construire un tableau en énumérant ses éléments entre crochets, séparés par des virgules. Un tableau est donc représenté en Python par une liste. >>> a = [3, 7, 42, 1, 4, 8, 12] Définition d un tableau en compréhension En Python, on peut construire un tableau en l explicitant sous la forme [e(i) for i in range(n)], où e est une expression quelconque, qui construit le tableau [e(0), e(1),, e(n-1)]. >>> [ i ** 2 for i in range(6) ] Ex 1 Afficher la liste des x 2 où 1 x < 100, en se limitant à x 3[10]. Taille d un tableau et désignation d un élément On peut obtenir la taille (ou longueur) d un tableau avec la fonction len. Pour désigner le i eme élément d un tableau L, on note L[i]. (on garde à l esprit que le comptage commence à 0) Ex 2 On considère le tableau T = [1,3,5,7,9,11,13,15] Afficher la longueur du tableau puis les 2 eme,5 eme éléments de la liste. Afficher le dernier élément de la liste. 1
Affectation et tableau Si l on se donne un tableau a et que l on produit l affectation b = a ; le tableau b n est pas une copie du tableau a. En effet, les deux variables a et b désignent toutes les deux le même tableau. On dit alors que a et b sont des alias. Par conséquent toute modification sur le tableau a modifiera également le tableau b. = [0,1,2,3] = a.remove(3) # On supprime 3 dans le tableau a Si l on réaffecte a, b ne sera pas modifié et gardera l ancienne valeur de a. = [5,6] # On réaffecte a [0, 1, 2] # b n'a pas été réaffecté Copie d un tableau Pour copier un tableau, il faut utiliser l instruction deepcopy qui se situe dans le module copy. Ex 3 Reprendre l exemple précédent avec l instruction deepcopy que l on chargera au préalable depuis la bibliothèque copy. 2. Parcours des éléments d un tableau Accès à une partie des éléments (slicing) On peut également extraire tous les éléments situés entre les indices i (inclus) et j (exclu) d un tableau a avec la notation a[ i : j ]. On peut également extraire les éléments avec un pas de k avec la notation a[ i : j : k ]. Ex 4 On considère le tableau L = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]. En utilisant le slicing, afficher le sous-tableau contenant tous les éléments compris entre 6 et 11. En utilisant le slicing, afficher tous les multiples de 3. Taper l instruction suivante : L[ : :-1]. Commenter De manière générale, la notation a[ i : j ] construit un nouveau tableau de longueur j - i. Cette opération n est pas instantanée puisqu elle revient à faire j - i affectations. 2
Parcours et test sur un tableau La boucle for de Python permet de parcourir directement tous les éléments du tableau a avec l instruction for x in a L instruction if de Python permet de tester si un élément appartient à un tableau a avec l instruction if x in a 2 >>>9 in [3, 5, 7, 11, 13] False >>>7 in [3, 5, 7, 11, 13] True Ex 5 Ecrire un programme calculant la somme des éléments de la liste L précédente. Ex 6 On considère la liste M = [1,2,3,4,5,6,7,8,9]. Créer et afficher la liste N des carrés des éléments de M. Créer et afficher la liste des carrés impairs des éléments de M. Négation On dispose aussi de not in, qui s utilise sous la forme x not in a. Nombre d occurrences Avec la méthode count on peut compter le nombre de fois où x apparaît dans a. Avec la méthode index on peut connaître le première indice où x apparaît dans le tableau a. = [8,4,2,1,4,4,1].count(4) 3.index(4) 1 3. Opérations sur les tableaux Somme et produit sur les tableaux On peut ajouter (concaténer) deux tableaux a et b simplement en faisant a + b ; on peut également multiplier un tableau par un entier pour répéter une séquence. >>> [1, 2, 3] + [4, 5] [1, 2, 3, 4, 5] >>>5 * [1, 2] [1, 2, 1, 2, 1, 2, 1, 2, 1, 2] 3
Insérer un élément Avec la méthode insert on ajoute un élément en choisissant sa place dans le tableau. = [5, 3, 8, 1, 4]. insert (1,9) Supprimer un élément Il y a différentes possibilités : Avec l instruction del on enlève un élément en particulier Avec la méthode pop on enlève un élément choisi et le résultat retourne l élément enlevé. Avec la méthode remove on enlève le premier élément égal à l élément donné. = [5, 3, 8, 1] >>>del a[1].pop(0).remove(8) [1] 4. Chaînes de caractères Conversion list/str On utilise la méthode join qui permet de prendre en argument une liste et donne une chaîne de caractères où les éléments sont séparés par un caractère choisi. separateur.join(liste) >>>L = [ 'Vivement','les ', 'vacances'] >>> ' '. join (L) >>>M = [ '0', '+', '0' ] >>> ' '.join(m) Conversion str/list Pour convertir une chaîne de caractères en liste, on la découpe selon un séparateur que l on a choisi, pour celà, on utilise la méthode split avec la syntaxe chaine.split(separateur) 4
>>>chaine = ' Vivement les vacances' >>>chaine. split ( ' ' ) >>>chaine. split ( 'e') Généralités Globalement, la plupart des résultats vus sur les listes s appliquent aux chaînes de caractères : les instructions len, count, la désignation des termes d une chaîne de caractère, le slicing Par contre, les méthodes del, pop, remove ne s appliquent pas aux chaînes de caractères. Pour supprimer des éléments d une chaîne de caractère, il faut alors avoir recours à d autres stratégies. Ex 7 Créer un programme qui demande à l utilisateur un mot et qui donne le nombre de voyelles et le nombre de consonnes de ce mot. Ex 8 Créer un programme qui demande un mot à l utilisateur et qui supprime les voyelles de ce mot. Ex 9 Créer un programme qui demande un mot à l utilisateur et qui range les lettres de ce mot par ordre alphabétique. 5