Vous êtes sur la page 1sur 10

TP3 : Les séquences :

Les listes & Les chaines de caractères


python

Partie I : Manip
Une séquence est une liste finie d'éléments indexes de 0 jusqu'au dernier élément, ça regroupe les listes,
les tuples et les chaines de caractères.
RAPPEL:
range(p,n,pas) représente la suite des entiers de p inclus à n exclu, avec un pas. On peut l'utiliser dans
une boude ou bien encore le convertir en liste.
Manipuler les listes
Les listes en python sont une variable dans laquelle on peut mettre plusieurs variables. Soit1st une
liste quelconque, soit x un élément :

lst= list() # Création d'une liste vide équivalent à lst=()


len(lst) # renvoie le nombre d'éléments dans lst.
#ajoute l’élément x à la fin de la liste lst.
lst.append(x)

lst.remove(x) #supprime de la liste1st, la première occurrence de l'élément x (si la liste


lst contient plusieurs fois l’élément x, seul le premier est enlève).
#lnsère l'élément x à l'indice i dans 1st (fait le décalage des autres
L.insert(i,x)
éléments).

lst.pop() #supprime le dernier élément de Ia liste lst.

lst.pop(i) #supprime l'élément d'indice i de la liste lst.


lst.count(x) #renvoie le nombre d’occurrence de x dans lst
#renvoie True si x est un élément de la liste lst, sinon renvoie False.
x in lst
#renvoie l'indice de l'élément x dans la liste lst.
lst.index(x)
#renverse sur place les éléments de lst
lst.reverse()
#crée une copie de la liste 1st, avec les éléments de lst en ordre inverse
reversed(lst)
#modifie la liste lst en la triant par ordre croissant.
lst.sort()
sorted(lst) #crée une copie de la liste lst, triée par ordre croissant (la liste lst n'est pas
modifiée par cette instruction ; seule sa copie est triée).
zip(lst,lst2) # faire des boucles sur deux séquences ou plus en même temps.

REMARQUE : En tapant help(list) dans l'interpréteur python, on obtient toutes ces fonctions ainsi que
beaucoup d'autres.

1/8
TP3 : Les séquences : Les listes & les chaines de caractères

Essayez les instructions suivantes :

Instruction à saisir Résultat obtenu+ commentaire ou explication

maliste=[22, "coucou", 33, "z", 'a', 'b', 111, 99]

Maliste

len(maliste)

'z' in maliste

Maliste[3]=1024

'z' in maliste

Maliste

maliste.append(33)

maliste.append("hello")

Maliste

maliste.remove(33)

33 in maliste

maliste

maliste.pop()

maliste.pop(l)

Maliste

maliste.index('a')

2/8
TP3 : Les séquences : Les listes & les chaines de caractères

maliste.index(lll)

maliste.sort()

maliste.remove('a')

maliste.remove('b')

Maliste

maliste.sort()

Maliste

uneliste=('z' ,'a', 'd', 'aa')

uneliste.sort()
uneliste
MAJ= ('A', 'B', 'C')
mini= ('a', 'b', 'c')
for M, m in zip(MAJ, mini):
print('minus de ',M,' est ',m)

{x: x* *2 for x in (2, 4, 6)}

Extraire une sous-liste d'une liste (slising)


On peut extraire une sous-liste d'une liste en indiquant entre crochets les indices des éléments que
l'on veut extraire. Soit 1st une liste quelconque.
lst(p) #renvoie l'élément d'indice p de l st.
lst[p:n] #renvoie une nouvelle liste constituée des éléments de 1st d'indice p
inclus à n exclu.
lst[p:n:pas] #renvoie une nouvelle liste constituée des éléments de lst d'indice p inclus à
n exclu, tous les pas.
lst[:] #renvoie une nouvelle liste constituée de tous les éléments de lst.
lst[p:] #renvoie une nouvelle liste constituée de tous les éléments de lst à partir de
l'élément d'indice p inclus.
lst[:n] #renvoie une nouvelle liste constituée de tous les éléments de lst depuis
le premier jusqu'à l'élément d'indice n exclu.
lst[:pas] #renvoie une nouvelle liste constituée des éléments de lst, tous les pas.

3/8
TP3 : Les séquences : Les listes & les chaines de caractères
Essayez les instructions suivantes :

Instruction à saisir Résultat obtenu+ commentaire ou explication

maliste

maliste[0:3]

maliste[0:4:2]

maliste[0:3]

maliste[:]

maliste[::2]

maliste[::-1]1

maliste[0]

maliste[l]

maliste[4]

maliste[5]

maListe[-1]

maliste[-2]

maliste[-5]

maliste[-6]

maliste[:3]

maliste[2:]

maliste[-1]="b"

maliste

Identité des valeurs


L'affectation en Python est l’association entre un nom de variable et une valeur. Lorsqu'on affecte
une variable à une autre variable, on créé simplement un autre nom qui partage la même valeur en
mémoire - on peut tester qu'il s'agit effectivement de la même valeur avec l'opérateur is qui compare
l'identité de deux valeurs. Essayez les instructions suivantes :

Instruction à saisir Résultat obtenu+ commentaire ou explication


a= 14000 2

1 Une simple méthode pour inverser une liste;)


2 On utilise une valeur entière élevée pour éviter un cas particulier d'optimisation réalise pour les valeurs de -4 à 256, on aurait
aussi pu utiliser une valeur flottante.

4/8
TP3 : Les séquences : Les listes & les chaines de caractères

b=a

b == a

b is a

c = 14000

c == a

c is a

Cela ne pose pas de problème avec les types int, float, bool et str car les valeurs elles-mêmes ne sont
pas modifiables3 (pour changer la valeur associée à la variable ii faut réaliser une nouvelle affectation).
De la même façon, l'affectation d'une variable à une autre variable d'une valeur de type list, ne créé
pas une nouvelle liste qui soit une copie de la première, mais met simplement en place un nouveau
nom qui référence la même liste en mémoire. Or il est possible de modifier directement cette valeur
liste4en utilisant les opératoires et méthodes vues précédemment. Si deux variables référencent la
même liste, les modifications réalisées en utilisant une variable seront visibles aussi avec l'autre
variable.
Pour créer une copie d'une liste en étant sur que les modifications ne toucheront pas l'originale, il faut
utiliser un des moyens présentes ci-après. Tapez dans l'interpréteur python :

Instruction à saisir Résultat obtenu+ commentaire ou explication


maliste

liste2 = maliste

liste2 is maliste

liste2[1]="nouveau"

liste2

maUste
#1ère méthode de copie : grâce à un
transtypage.
liste3 = list(maUste)
liste3 is maliste

liste3[4]="surprise"

liste3

maliste

3 En Python endit que ces types int, float, bool, str sont "immutables".
• En Python on dit que le type list est "mutable".

5/8
TP3 : Les séquences : Les listes & les chaines de caractères

#2ème méthode de copie : grâce à une


extraction de tous les éléments de maliste.
liste4 = maliste[:]

liste4 is maListe

liste4[0]=8

liste4

maliste

#3ème méthode de copie : avec le module copy


import copy
liste5 = copy.deepcopy(maliste)
Liste5 is maliste

La troisième méthode a l'avantage de faire une copie en profondeur sur tous les éléments de la liste, ce
qui permet de traiter le cas des listes imbriquées...
Liste de listes
On peut en effet mettre des listes dans des listes, par exemple pour créer des tableaux à 2 dimensions (ou
plus) :

Instruction à saisir Résultat obtenu+ commentaire ou explication


var=[[l,2,3],[4,5,6]]

var[0]

var[l]

var[0][0]

var[0][l]

var[0][2]

REMARQUE : Tout comme pour les chaînes de caractères, on peut concaténer deux listes avec
l'opérateur + et répliquer plusieurs fois le contenu d'une liste avec l'opérateur de multiplication* et
un entier.

Parcourir ou remplir une liste avec une boucle for


On peut parcourir une liste avec une boucle for de 2 façons :

- soit en parcourant les indices de la liste :

for indice in range(len(lst)):

• soit en parcourant directement la liste :


for element in lst:

6/10
TP3 : Les séquences : Les listes & les chaines de caractères

Les chaines de caractères


Les chaines de caractères fonctionnent à peu près comme des listes de caractères, mais elles ne
sont pas modifiables : on ne peut donc pas leur ajouter des caractères ou en enlever, ni trier leurs
caractères par ordre croissant, ni modifier les caractères un par un. En revanche, on peut accéder
aux caractères d'une chaine par leu.rs indices dans la chaine, et extraire des sous-chaines d'une
chaine de la même façon que pour les listes.

uneChaine[p:n:pas] #Renvoie une nouvelle chaine constituée des


caractères d’une Chaine d'indice p inclus an
exclu, tous les pas.
unCar in uneChaine #Renvoie True si le caractere unCar est
présent dans la chaine uneChaine, sinon
renvoie False.
len(uneChaine) #Renvoie la longueur ( l e nombre de caractères)
de la chaine uneChaine
Certains caractères se traduisent par un retour à la ligne ou une tabulation.
• le caractère \n introduit un retour à la ligne
• le caractère \t introduit une tabulation (décalage horizontal)
• le caractère \\ introduit un seul \

Instruction à saisir Résultat obtenu+ commentaire ou explication


sl="bonjour"

len(s1)
s1[:3]

s1[2]="z"

"o" in s1
print("vive\n l'inforrna\ntique")

"ara"=="zygomatique"

"ara"<"zygornatique"

"ara">"zygornatique"

"abscisse"<"ordonnée"

"abscisse"=="ordonnée"

"abscisse">"ordonnée"

7/10
TP3 : Les séquences : Les listes & les chaines de caractères

Autres fonctions concernant les chaines de caractères


D'autres méthodes utiles pour les chaines de caractères (certaines acceptent d'autres paramètres
optionnels, qui ne sont pas listés ici
 La notation [xxx] indique que xxx est optionnel et peut être omis
 Les [ ] ne sont qu'une indication et ne font pas partie de la syntaxe lors de )'utilisation) :

uneChaine.split([separateur]) #Renvoie une liste contenant la chaine uneChaine


découpée en plusieurs sous-chaines. Par défaut la
séparation se fait sur l es blancs (espaces, tabulations,
retours à la ligne), sauf si un autre séparateur est spécifié.
uneChaine.join(sequenceCh) #Renvoie une nouvelle chaine contenant tous les éléments
de la liste sequenceCh, concaténés en utilisant uneChaine
comme séparateur.
uneChaine.find(sousChaine) #Renvoie la position de la première occurrence de
sousChaine dans uneChaine. Renvoie -1 si sousChaine
n'est pas trouvée.
uneChaine.strip([caractères]) #Renvoie une nouvelle chaine dans laquelle tous les blancs
(ou tout caractère présent dans caractères s'il est donne
en paramètre) sont ôtés au début et à la fin de uneChaine.
uneChaine.replace(ancienne, #Renvoie une nouvelle chaine dans laquelle chaque
nouvelle) occurrence dans uneChaine de la sous-chaine ancienne
est remplacée par nouvelle.
uneChaine.capitalize() #Renvoie une nouvelle chaine clans laquelle le premier
caractère de uneChaine a été transformé en majuscule et
les suivants en minuscules.
uneChaine.lower() #Renvoie une nouvelle chaine ou toutes les lettres de
uneChaine ont été converties en minuscules.
uneChaine.upper() #Renvoie une nouvelle chaine ou toutes les lettres de
uneChaine ont été converties en majuscules.
uneChaine.strip([caractères]) # Supprime les blancs (ou tout caractère dans caractères)
au début et à la fin de uneChaine

De plus, on dispose des méthodes booléennes suivantes, dites «de test de contenu » :

uneChaine.isalnum() # alphanumérique uniquement (chiffres ou lettres).


uneChaine.isalpha() # lettres uniquement.
uneChaine.isdigit() # chiffres uniquement
uneChaine.islower() # lettres minuscules uniquement.
uneChaine.isspace() # blancs uniquement.
uneChaine.istitle() # forme de titre.
uneChaine.isupper() # lettres majuscules uniquen1ent

8/10
TP3 : Les séquences : Les listes & les chaines de caractères

Partie II : Exercices
Exercice 1
Soit la liste suivante :
Nb_jours=[31,28,31,30,31,30,31,31,30,31,30,31]
Mois=[‘janvier’,’Février’,’Mars’,’Avril’,’Mai’,’Juin’,’juillet’,’Aout’,’Septembre’,’Octobre’,’Novembre’,’Décember’]

Ecrire un script python qui permet de :


1. Initialiser les deux listes T1 et T2
2. Afficher tous les éléments de la liste T2, on devrait obtenir :
‘janvier’,’Février’,’Mars’,’Avril’,’Mai’,’Juin’,’juillet’,’Aout’,’Septembre’,’Octobre’,’Novembre’,’D
écembre’

3. Créer une liste T3 contenant tous les éléments des deux listes en les altérant, càd chaque nom
de mois soit suivi du nombre de jours correspondant :
T3=["Janvier " ,31 ,"Février" ,28, ,"Décembre" , 31]
Exercice 2
Soit la liste suivante :
Semaine=["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"]
1. Ecrire une boucle for pour afficher à l’écran les éléments de la liste semaine, sur des lignes différentes :
• Avec la première méthode (parcours des indices),
• Avec la deuxième méthode (parcours directs de la liste)
2. Définir les trois listes
A=["lundi","mardi"],
B=["mercredi","jeudi"]
C=["vendredi","samedi","dimanche"].
En utilisant A, B et C, construire
• La liste des sept jours de la semaine à laquelle on a enlevé mercredi.
• La liste des jours ouvrables de la semaine. Trier cette dernière liste en ordre lexicographique décroissant.

Exercice 3
Ecrire un programme qui permet de saisir une liste d’entiers L et d’afficher la somme des éléments
ainsi que la valeur max et la valeur min

Exercice 4
1. Ecrire un script python permettant de remplir une liste D par N entiers saisis au clavier
(6<=N<=50) et créer une nouvelle liste R contenant les sommes cumulées des éléments de D :
• Exemple pour D= [7,2,4,10,6,0]--> R=[7,9,13,23,29,29]
2. On définit un nombre réel n de type float.
Ecrire un script python qui renvoie la liste [d1,d2, ;………..dn] des n premières décimales de x
• Exemple pour x= 3,1415962 on doit trouver la liste [1,4,1,5,9,6,2 ,]

9/10
TP3 : Les séquences : Les listes & les chaines de caractères

Exercice 5 : liste de compréhension


Ecrire un programme qui permet de :
• Construire la liste des carrés et celle des cubes de tous les nombres de 20 à 40
• Construire la liste des puissances de 5 pour toutes les valeurs d’exposant dans l’intervalle [6,14].
• Construire la liste des sinus des angles de 0à 90 degrés par pas de 5 degrés.

Exercice 6
Ecrire un programme qui permet de saisir les deux matrices suivantes :

Le programme doit afficher le résultat des opérations suivantes :


A+B , A- B , 3*A+10*B

Exercice 7
Soit la chaine ch « un bon étudient est celui qui révise chaque jour son cours »
• Définir en python la chaine ch
• Définir la chaine ch1qui contiendra le mot « bon » à partir de la chaine ch
• Définir la chaine ch2 qui contiendra le mot « un bon bonbon » à partir des chaines ch et ch1

Exercice 8
Ecrire un programme python qui permet de :
• Faire saisir une phrase avec input ()
• Compter et afficher le nombre de voyelles dans cette phrase
• Compter et afficher le nombre de mots de cette phrase.

Exercice 9
Ecrire un programme qui lit une ligne de texte, et qui comptabilise le nombre de lettres qu’elle contient
et qui donne le pourcentage de chaque lettre.

Exercice 10
Définir deux ensembles (sets) : X={a,b,c,d} et Y={s,b,d}, puis affichez les résultats suivants :
• Les ensembles initiaux ;
• Le test d’appartenance de l’élément ‘c’ à X ;
• Le test d’appartenance de l’élément ‘a’ à Y ;
• Les ensembles X-Y et Y-X ;
• L’ensemble Z=X union Y ;
• L’ensemble W=X inter Y

10/10

Vous aimerez peut-être aussi