0% ont trouvé ce document utile (0 vote)
4 vues13 pages

Manipulation des séquences en Python

c est un cours de sécurité informatique qui vise de definir quelques concepts clés sur l'utilité de ce domaine

Transféré par

azizkhayri341
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues13 pages

Manipulation des séquences en Python

c est un cours de sécurité informatique qui vise de definir quelques concepts clés sur l'utilité de ce domaine

Transféré par

azizkhayri341
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

EPI-Digital School A.

U: 2022-2023
Département Informatique Enseignant: Mme [Link]
de Gestion Auditoire : 3GI

TP N° 2: Les Séquences
Les listes, les tuples, les chaines
Objectifs
1. Manipulation des séquences en Python

2. Savoir choisir la structure adéquate à un problème donné

Les Types Composés


Les types composés ou structurés sont les conteneurs de données. Un conteneur est un objet
composite destiné à contenir d’autres objets. Nous distinguons les dictionnaires, les ensembles,
les tuples, les chaines de caractères et les listes.

En Python:
• List: Une collection mutable d’objets ordonnés.
• Set: Une collection non ordonnée d’objets uniques et immuables
• Tuple: Séquence immuable hétérogène
• Dictionnaire (mémoires associatives) : Association non ordonnée de clés (keys) uniques
immuables à des valeurs (values) mutables
• Range (intervalle) : Une séquence arithmétique de valeurs
• Str: séquence immuable homogène de caractères Unicode
Les Listes
En Python, une liste est un ensemble ordonné fini et modifiable d’objets indicés (repérés par
les entiers). Autrement dit, une liste est une séquence finie modifiable d’objets numérotés à
partir de 0.

 Les objets contenus dans une liste s’appellent aussi les éléments de cette liste. Les
éléments sont modifiables et pas forcément du même type.

 Une liste peut elle-même contenir d’autres listes !

 Le numéro attaché à chaque objet d’une liste s’appelle aussi l’indice de l’objet.

Une liste est déclarée par une série de valeurs séparées par des virgules, et le tout encadré par des
crochets. Par exemple :

A- Création d’une liste :

 La fonction list()

 Liste de n éléments tous identiques : [ élément ] * n ou n * [ élément ]

Exemple : [‘a’] * 2 ----> [ ‘a’, ‘a’ ]


3 * [ 1 ] -----> [ 1 , 1 , 1 ]

 Génération par compréhension de liste (image d’une liste par une fonction ou par une
méthode).

Syntaxe :

[ fonction(x) for x in liste ] ou [ x.méthode( ) for x in liste ]

Exemple : soient deux listes nb=[65,66], ltr=[‘A’,’D’] et une fonction essai(x) qui retourne x-
3
Exercice N°1:
[ 1 for k in range (4) ] →
[ 0 for k in range (2) ] →
[ 3*p for p in [4 , -1 , 0 ] ] →
[ 2*m + 1 for m in range (4) ] →
[ [Link]( ) for h in ['n','s','i'] ] →
[ ord(z) for z in ['a','b','c'] ] →
['mot' + str(k) for k in range(1)] →
Liste de 100 zéros →
[1 , 4 , 9 , 16 , etc. , 100] →
['a1' , 'b1'] à partir de ['a' , 'b'] →
Les 26 lettres majuscules de l’alphabet français →

 Listes en compréhension avec filtrage (condition) ou listes images restreintes


Syntaxe : [ fonction (k) for k in liste if condition ] ou [ [Link]() for k in liste if condition]

Exemple:
[ k**2 for k in range (101) if k % 2 == 0 ]: La liste des carrés des (entiers pairs < 100)

Exercice N°2 :
*[’a’*nombre for nombre in [2 , -1 , 0] if nombre >= 0]

* [2*k for k in range(14, 23) if k % 7 == 0]

* [ [Link]( ) for lettre in 'bonjour' if lettre < 'k' ]

* Les cubes des (entiers <= 99 impairs) :

*Les carrés >=245 des entiers <= 30 :

*Liste des lettres communes à 'bonjour' et 'jour' :

B- Accéder à un élément d'une liste


Les listes sont ordonnées : chaque élément possède un index indiquant sa position dans la liste.
Les listes commencent à 0 et se terminent à n-1.

Les listes sont mutables. Il est possible de modifier un élément avec son index

Remarque :
 Les indices négatifs lisent la liste en sens inverse à partir du dernier élément :
liste[-1] → dernier item.
 Si l’indice demandé hors de la liste → IndexError.
 Fonction len( ) : len(liste) : Renvoie le nombre d’éléments de liste, donc la longueur de
la liste.
Exemple :
len([ [0] , [1 , 2 ] ]) → ………..
len( 5 * [1] ) → …..…. ; len ( [ 5 * [1] ] ) → ……
len( range (3 , 13 , 5) ) → …….
len([range(2)]) → ….... ; len(range(2,n)) → …..
len( [ range(3) , [7] * 2 , ‘a’ ] ) → …………

Exercice N°3 : Complétez les instructions suivantes :

Soient les 2 listes pos et point suivantes :


pos = [x, y, z] et point = [pos , diam , [R , G , B]]
pos[2] → …. point[1] → …. pos[-1] → ….
point[2][1] → …. point[0][2] → …..
pos[1] → ………. point[2][0] → …….
pos[-3] → …..… point[3] → ………………
…………………….…. → x ………………….. → pos
point[……..][….…] → x ………………..…….… → B

C- Parcourir une liste L à l’aide d’une boucle For


Le parcours par indice est plutôt indiqué lorsqu’on a besoin des éléments et de leurs indices.
Le parcours par éléments est indiqué lorsqu’on a simplement besoin des éléments sans leurs
indices.

C.1. Parcours séquentiel classique à l’aide des indices

Syntaxe :
for indice in range(longueur de L) :
traitement sur L[indice]

Exemple:
L = [ 'je','tu','il']
for k in range(2) :
L[k] = L[k+1]
Que vaut L ?

C.2. Parcours direct sur les éléments (sans les indices).

Syntaxe :
for élément in L :
traitement utilisant élément

Exemple:
for lettre in [ 'a' , 'b' , 'c' ] :
print(lettre + 'd', end=',')
Qu’affiche le programme?

Exercice N°4 :
Ecrire un programme qui en entrée reçoit une liste et une valeur, et en sortie renvoie le
nombre de fois où est présente cette valeur dans la liste. 
Ecrire un programme qui en entrée reçoit une liste et une valeur, et en sortie renvoie la liste
de tous les indices où se trouve cette valeur dans la liste.
Ex : Pour liste = [ 1 , 2 , 1 , 5 ] et la valeur 1 en entrée, la fonction renverra [0 , 2 ].
Ecrire un programme qui en entrée reçoit une liste d’entiers, et en sortie renvoie le maximum
de cette liste.

D- Récupérer le nombre de fois où apparait un objet dans une liste :

Syntaxe :
A=[Link](Objet).

Exemple :
prix = [ 5 , [ 5 ] , 1 , sqrt(25) , '5' , 5.0 ]
Combien vaut b ? ……..

E- Chercher si un objet est présent dans une liste (True/False):


Syntaxe :
Objetcherché in liste
Exemple :
Soit la liste ages = [ 3 , 7 + 2 , 7 − 2 ].
if 5 in ages :
print (‘Oui’)
else :
print (‘Non’)

F- Récupérer la 1ère position d’un objet dans une liste :


Syntaxe :
a=[Link](element_cherché).
Si l’élément cherché n’existe pas dans la liste → ValueError

G- Modifier les items ou l’ordre des items d’une liste

G .1 . Modifier, remplacer un élément d’une liste :


Syntaxe:
liste[indice k] = nouvelle valeur
Nouvelle valeur affectée à l’item d’indice k.
Si indice k hors de la liste → IndexError.

G .2 . Inverser une liste :


Syntaxe:
*[Link]( ) : Modifie la liste elle-même en la renversant (pas d’affectation)
* a = list(reversed(liste)) : Crée une nouvelle liste renversée. A affecter à elle-même ou à un
autre nom.

G.3. Trier une liste par ordre croissant :


Syntaxe:
* [Link]( ) : Modifie la liste elle-même en la triant. Pas d’affectation !
* a=list(sorted(list)) : Crée une nouvelle liste triée. A affecter à elle-même ou à un autre nom
H- Parcourir ou allonger une liste :
H .1 Vider une liste :
- [Link]( ) : Efface tous les éléments de la liste ([ ]). Pas d’affectation !
H.2 Supprimer un élément connaissant soit sa position (Mot clé del), soit sa valeur (Méthode
.remove( )).
- del liste[indice k] (Pas d’affectation) : Si indice k hors de la listeIndexError.

- [Link](objet): (Pas d’affectation) : Supprime de la présente liste seulement la 1ère fois


où objet apparait dans liste.
Si objet non dans la liste ValueError.

Exemple:
Soit la liste age = [ 2 , 1 , 2.0 ].
En repartant de la liste age à chaque fois :
del age[2] → age vaut …..
[Link](2.0) → age vaut …..
del age[3] → ..……….……….. [Link](2) → …………

I- Ajouter un élément à la liste

I.1. Ajouter un élément à la fin de liste : [Link]( ) (Pas d’affectation)


Exemple: Soient les listes a = [ 1 , 2 , 3 ] et b = [4 , 5]
[Link](4) → a vaut [ 1 , 2 , 3 , 4 ]
[Link](b) → a vaut [ 1 , 2 , 3 , [4 , 5] ]

I.2. Insérer un élément dans une liste : [Link](indice,element) (Pas d’affectation)


Exemple : Soient les listes a = [ 1 , 2 , 3 ] et b = [4 , 5]
[Link](1 , 4) → a vaut [ 1 , 4 , 2 , 3 ]
[Link](0 , b) → a vaut [ [4 , 5] , 1 , 2 , 3 ]

J- Copie d’une liste :


a = [Link]( ) : Crée une nouvelle liste ayant les mêmes items que liste. A affecter à un autre
nom

K- Etendre une liste existante avec les éléments d’une autre liste :
[Link](liste2) (Pas d’affectation) : Etend liste1 en rajoutant à la fin de liste1 tous les
éléments de liste2.
Exemple :
soit la liste a = [ 1 , 2 ].
[Link]([ 3 , 4 ])  a vaut [ 1 , 2 , 3 , 4 ].
[Link]([ [3 , 4] ])  a vaut [ 1 , 2 , [3 , 4] ].
[Link](5) TypeError : 5 n’est pas une liste !

L- Concaténation :
liste3 = liste1 + liste2 : Crée un nouvel objet liste3 composé d’abord des éléments de liste1 puis
de ceux de liste2.
Remarque : différence avec la méthode .extend( ) : la concaténation crée un nouvel objet liste !
M- Tranches de liste :
a = liste[ d : f ] Crée une nouvelle liste a allant de l’élément d’indice d inclus (si rien : 0)
jusqu’à l’élément d’indice f exclu (si rien : jusqu’à fin incluse).

N- Créer une seule chaîne de caractères à partir d’une liste de plusieurs caractères :
ch = "caractères de jointure".join(liste)
Attention : que pour des éléments de type str !
Crée une nouvelle chaîne avec tous les caractères de liste joints par les caractères de jointure. A
affecter !

Exemple :
Soit la liste a = [ ‘b’ , ‘ao’ , ‘bab’ ].
mot = ‘-‘.join(a) mot vaut ‘b-ao-bab’
‘i’.join(a)‘biaoibab’
‘ut’.join(a) ‘butaoutbab’

O- Créer une liste de caractères à partir d’une chaîne de caractères :


a = "chaîne".split("caractères de coupure") : La chaîne est coupée à chaque fois qu’apparaît le
caractère de coupure dans chaîne.
Puis création d’une nouvelle liste à partir des morceaux issus de ce découpage.
Exemple :
a = ‘b-ao-bab’.split(‘-‘)  a vaut [‘b’, ‘ao’ , ‘bab’]
b = ‘faiscifaisça’.split.(‘fais‘) b vaut [ ‘’ , ‘ci’, ‘ça’ ]

Exercice N°6 :
Ecrire un programme Python listAleaInt qui créé une liste de n entiers aléatoires dans [a ..
b] en utilisant la fonction randint(a, b) du module random.

Le programme doit:

 construire la liste aléatoire;


 calculer l'index de la case qui contient le minimum ;
 échangez le premier élément de la liste avec son minimum.

Exercice N°7 :
Ecrire un algorithme python qui divise une liste l en deux listes l_even, l_odd où l_even est
composé des éléments de l d'indexe pair et l_old est constitué par les éléments d'indexe impair

Exercice N°8:
Ecrire un algorithme Python qui renvoie la liste des diviseurs d'un entier donné.
Exemple si n = 18, l'algorithme renvoie la liste [1, 2, 3, 6, 9, 18]

Exercice N°9:
Ecrire un algorithme python permettant de supprimer les éléments dupliqués d'une liste.
Exercice N°10:
Ecrire un programme python qui permet de saisir deux entiers 𝐦 et 𝐧, et une liste 𝐥𝐢𝐬 de 𝐦 ×
𝐧 nombres entiers. Le programme doit construire à partir de la liste une matrice 𝐦 × 𝐧 et
l’afficher. Exemple : si 𝐦 =3, 𝐧 =2 et 𝐥𝐢𝐬 = [0,1,0,0,1,1] alors le programme doit afficher
[[0,1],[0,0],[1,1]]

Les Tuples N-Upplets


En Python, un tuple est une liste non modifiable d’objets indexés par des entiers. Les tuples,
contrairement aux listes, font partie des objets immuables.
 Les objets contenus dans un tuple s’appellent aussi les éléments ou items de ce tuple.
 Les éléments ne sont pas forcément de même type !
 Un tuple peut lui-même contenir d’autres tuples ou des listes etc.
 Les indices d’un tuple commencent aussi à 0 et non à 1 !

Définir un tuple :
Définir un tuple, c’est écrire tous les éléments le composant selon 2 règles :
 entre parenthèses ( )
 séparés par des virgules.
Remarques :
 ( ) : tuple vide. Ne sert strictement à rien car on ne peut pas modifier un tuple !
 (1,) : tuple à 1 élément de type int. Ne pas oublier la virgule !
 Les tuples à un seul élément ne servent quasiment jamais sauf à générer des tuples
d’éléments tous identiques !
 un élément entre parenthèses sans virgule n’est pas un tuple mais juste un élément ! Les
parenthèses ne servent alors à rien. Ex : (1) est en fait juste 1. (‘a’) est en fait juste ‘a’.
 (‘6ème1’, ‘6ème2’, ‘6ème3’) : tuple de 3 éléments tous de type str.
 (True , [1 , 3] , 2/3) : tuple de 3 items, 1 de type bool, 1 de type list, 1 de type float.
 Par analogie avec les Maths, un tuple à 2 éléments pourrait s’appeler un couple, un tuple
à 3 éléments : un triplet, un tuple à 4 éléments : un quadruplet, etc., un tuple à n
éléments : un n-uplet.
 un tuple, objet immuable, peut contenir des choses qui changent de valeur comme des
variables ou des objets muables comme des listes !

A- Création d’un tuple

Création simple et nom_tuple = (1 , ‘a’)  nom_liste = [1 , ‘a’] 


initialisation d’un tuple :
Créer un tuple /une liste de n  nom_liste = [ élément ] * n ou n * [
éléments tous identiques : élément ] 
Créer un tuple / une liste d’une  nom_liste = list(range(d , f , p)) 
suite arithmétique d’entiers 

Génération par compréhension  [ fonction(x) for x in séquence if condition


]

Créer une nouvelle liste3  liste3 = liste1 + liste2 


/tuple par concaténation
(accolement par l’opérateur +)
de liste1 et liste2 :

Créer une nouvelle chaine de b = "caractères de jointure".join(liste)
caractères b à partir d’un tuple /
une liste de plusieurs
caractères

Créer un tuple / une liste de  a=


caractères à partir d’une chaîne list("chaîne".split("caractères_coupure"))
de caractères 

Créer une tranche (slice) d’une  b = liste[ d : f ] 


liste /un tuple en allant de
l’indice d inclus à l’indice f
exclu. Et affecter cette tranche
àb

B- Tirer de l’information

Nombre d’éléments d’une liste len(liste)


/un tuple (longueur de liste)
Récupérer dans a l’élément a = L[ k ]
d’indice k d’une liste L/d’un
tuple T:
Parcours d’une liste L/d’un for index in range(longueur de
tuple T à l’aide d’une boucle for L) :
traitement sur L[index]
Parcours séquentiel à l’aide
des indices for élément in L :
Parcours direct sur les traitement utilisant élément
éléments quand on n’a pas
besoin des indices
Oui ou non objet est-il présent objet in liste
dans lste/ tuple ?

Récupérer le 1er indice d’objet a = [Link](objet)


dans tuple/liste :
Récupérer le nb de fois où objet a = [Link](objet)
est dans tuple / liste
Pourquoi les tuples sont-ils quand même si importants ?
un tuple est immuable (n’est pas modifiable).

• Impossible dans un tuple de modifier un élément ou de modifier la place d’un


élément :
Donc tuple[k] = nouvellevaleur, reversed(tuple) et [Link]( ), sorted(tuple) et [Link]( ) →
Error.

• Impossible d’enlever ou d’ajouter des éléments à un tuple :


Donc [Link]( ), del tuple[k], [Link]( ), [Link]( ), [Link]( ), [Link]( ) →
Error
 Les tuples permettent la transmission sécurisée d’informations : Grâce aux tuples, on
peut être certain que des informations sensibles (par exemple des couples login-mot de
passe) ne seront pas modifiées par la suite des traitements !
 Un tuple est moins lourd qu’une liste : Un tuple prend moins de place en mémoire
qu’une liste ayant les mêmes éléments.
Avec la fonction getsizeof (du module sys : system) qui renvoie le poids en octets d’un
objet :

 Les tuples permettent les affectations parallèles.


a,b=1,2
a=1 et b=2
 En fait 1 , 2 est d’abord transformé en tuple (1 , 2) : c’est l’emballage en tuple
de valeurs (packing)
 Puis chaque élément du tuple est dispatché parallèlement sur chaque variable b
et a : c’est le déballage du tuple (unpacking).

 Lors du déballage, grâce à la notation *variable, on n’est même pas obligé d’avoir
le même nombre de variables réceptrices que d’éléments à dispatcher dans le
tuple.
Exemple : début, *f , b , fin = 1 , 2 , 3 , 4 , 5 , 6
début → 1 fin → 6 b → 5 donc f → [2 , 3 , 4]
f a ramassé le reste des éléments sous forme de liste.
 Les fonctions renvoient leurs résultats multiples sous forme d’un tuple.
Lorsqu’une fonction renvoie plus qu’une valeur, ces valeurs sont retournées sous
forme d’un tuple.
Ce tuple renvoyé peut être déballé dispatché sur plusieurs variables par affectation
parallèle.
 Les tuples peuvent jouer le rôle de clef dans les dictionnaires (TPN°3)

Les Chaines de Caractères


Les chaînes de caractères peuvent être considérées comme des listes (de caractères) un peu
particulières :

Exemple :
animaux="girafe tigre"
len(animaux)=12
animaux[3]=’a’

Nous pouvons utiliser certaines propriétés des listes comme les tranches :

animaux[0:4] : 'gira'
animaux[9:] : 'gre'
animaux[:-2] : 'girafe tig'
animaux[1:-2:2] : 'iaetg'

Les chaines de caractères sont des listes non modifiables. Par conséquent, si vous voulez modifier
une chaîne de caractères, vous devez en construire une nouvelle.

Méthodes associées aux chaînes de caractères :

Méthodes définition Exemple


upper() / lower() / renvoient un texte en majuscule/ en x = "girafe"
capitalize() miniscule x[0].upper() + x[1:]
Girafe

[Link]()
Girafe
Découpe une chaîne de caractères en animaux = "girafe tigre singe
plusieurs éléments appelés champs, en souris"
utilisant comme séparateur espace(s) [Link]()
blanc(s) ['girafe', 'tigre', 'singe', 'souris']

Argument maxsplit:
[Link](maxsplit=1)
split() ['girafe', 'tigre singe souris']

animaux =
"girafe:tigre:singe::souris"
[Link](":")
['girafe', 'tigre', 'singe', '', 'souris']
find( ) recherche une chaîne de caractères animal = "girafe"
passée en argument [Link]("i")
1
replace() substitue une chaîne de caractères par animaux = "girafe tigre"
une autre [Link]("tigre",
"singe")
'girafe singe'
count() compte le nombre d’occurrences d'une animaux = "girafe tigre"
chaîne de caractères passée en argument [Link]("i")
2
startswith() vérifie si une chaîne de caractères chaine = "Bonjour monsieur!"
commence par une autre chaîne de [Link]("Bonjour")
caractères ---->True
strip() permet de « nettoyer les bords » d'une chaine = " Comment enlever les
chaîne de caractères espaces au début et à la fin ?
"
[Link]()
'Comment enlever les espaces au
début et à la fin ?'

Exercice N°11:
Le but de cet exercice est de remettre en ordre alphabétique les prénoms présents dans la chaîne
de caractères. Vous devez créer une variable chaine_en_ordre qui, à la fin de l'exrcice, doit
contenir la chaîne de caractère avec les prénoms ordonnés.

Exercice N°12:
Ecrire un script python qui permet de saisir une phrase du clavier et:
1- afficher son nombre de mots
2- supprimer les espaces superflus
3- afficher le nombre d’occurrence du caractère « a » dans cette phrase
4- afficher la phrase dans un ordre renversé de caractères
5- afficher la phrase dans un ordre renversé de mots
6- vérifier si tous les mots commencent par une voyelle
7- remplacer toutes les occurrences de « er » par « ons »
8- remplacer la 1ère occurrence de « amis » par « comptes »
9- afficher la phrase saisie toute en commençant par une majuscule chaque mot
10- afficher les mots de la phrase dans l’ordre décroissant de longueur de mots
11- trier cette phrase dans l’ordre alphabétique croissant de la 2e lettre de chaque mot
Exemple :

Exercice N°13 :
Ecrire un programme python qui permet de :
1- lire une liste de mots. La lecture s’arrête lorsque l’utilisateur tape la lettre Q.
2- construire une liste de tuples où chaque tuple contient un mot de la liste et sa longueur. Utiliser
les listes de compréhension
3- afficher l’indice du tuple associé au mot le plus court
4- afficher la racine des mots lus s’il existe, sinon le programme affichera « pas de racine
commune ». La racine des mots représente le préfix commun de tous les mots de la liste.

Exemple :

Exercice N°14 :
Ecrire un programme Python qui lit deux mots (𝐦𝐨𝐭 et 𝐦𝐨𝐭_𝐜) et vérifie si le mot 𝐦𝐨𝐭 est
composable à partir du mot 𝐦𝐨𝐭_𝐜
Exemples
 𝐦𝐨𝐭 = "python", 𝐦𝐨𝐭_𝐜 = "aophrtkny", le programme affiche [python] est composable à partir de
[aophrtkny]
 𝐦𝐨𝐭 = " python", 𝐦𝐨𝐭_𝐜 = "miduyhnq ", le programme affiche [python] n’est pas composable à
partir de [miduyhnq]
NB. Un mot est composable à partir d’une séquence de lettres si la séquence contient toutes les
lettres du mot. Chaque lettre de la séquence ne peut être utilisée qu’une seule fois.

Vous aimerez peut-être aussi