Python : tuples et listes
Numérique et sciences informatiques

Les séquences en Python
En python, une séquence est une collection ordonnées d'objets qui permet d'accéder à ses éléments par leur numéro de postion dans la séquence.
Une séquence est un objet capable de contenir d'autres objets de n'importe quel type. De façon plus précise, nous définirons une séquence comme un ensemble fini et ordonné d'éléments indicés (l'index) de 0 à n-1 (si cette séquence comporte n éléments).
Les listes et les tuples sont des séquences.
p-uplests : Les listes
Une liste est une variable à part entière (de type list
). On parle de structure de données ou bien d’objet
conteneur : un objet qui en contient d’autres. Ce peut être des entiers, des réels, des listes, etc…
L’utilisation des listes est très répandue en Python car celles-ci sont modifiables (mutables). Les listes
sont définies entre 2 crochets et les items sont séparés par une virgule.
# une liste par duplication
liste_de_0 = [0]*10
print(liste_de_0)
liste_3_123 = [1,"toto",3]*3 #les éléments d'une liste peuvent être de types différents
print(liste_3_123)
# une liste vide
liste = []
print("une liste vide : ",liste)
# une liste de nombres de tout type
liste = [2, 10, 5//3, 7.2, 8,2.0]
print("Ma liste : ", liste)
print("Longueur de ma liste : ", len(liste) ) # la methode len()
print("Voici son contenu avec les éléments pris un à un : ", liste[0], liste[1], liste[2], liste[3], liste[4],liste[5])
print('\n')
print('Parcours des éléments avec une boucle sur les indices :')
for i in range(len(liste)) :
print(liste[i],end=', ')
print('\n')
print('Parcours des éléments avec une boucle sans les indices :')
for x in liste :
print(x,end='; ')
print('\n')
print('Parcours des éléments avec indices et éléments :')
for i,x in enumerate(liste) :
print("Le terme d'indice {} est {}.".format(i,x) )
Concaténer Les listes
La façon la plus simple à concaténer 2 listes est : list1 + list2
tellurique = ["mercure","Vénus","Terre","Mars"]
gazeuse = ["Jupiter","Saturne","Uranus","Npetune"]
planetes = tellurique + gazeuse
>>>print(planetes)
>>> ['mercure', 'Vénus', 'Terre', 'Mars', 'Jupiter', 'Saturne', 'Uranus', 'Neptune']
Modifier des éléments à une liste
Les élements d'une liste sont mutables (modifiables).
C'est une différence fondamentale avec une autre structure (les tuples) que nous verrons plus tard.
planetes.append("Pluton")
>>>print(planetes)
>>> ['mercure', 'Vénus', 'Terre', 'Mars', 'Jupiter', 'Saturne', 'Uranus', 'Neptune','Pluton']
La méthode append()
rajoute donc un élément à la fin de la liste.
planetes[2] = "La planète Bleue" # Pour modifier le 3ème élément de la liste
>>>print(planetes)
>>> ['mercure', 'Vénus', 'La planète Bleue', 'Mars', 'Jupiter', 'Saturne', 'Uranus', 'Neptune','Pluton']
l'Index a 2 sens : planetes[-6]
lettre chaine : S c i e n c e s
position depuis 0 : 0 1 2 3 4 5 6 7
position depuis la fin : -8 -7 -6 -5 -4 -3 -2 -1
La méthode remove()
va supprimer le premier élément de la liste (ce qui est problématique s'il y en a plusieurs) qui correspond à l'élément passé en argument.
planetes.remove("Pluton")
>>>print(planetes)
>>> ['mercure', 'Vénus', 'La planète Bleue', 'Mars', 'Jupiter', 'Saturne', 'Uranus', 'Neptune']
liste = [2, 10, 5//3, 7.2, 8,2.0]
liste.remove(2.0)
print(liste)
>>> [10, 1, 7.2, 8, 2.0] # Seul le premier 2 est suprimé !
Copier une liste
Pour copier le contenu d'une liste vers une autre, il faut utiliser la methode copy()
. Le système d'affectation classique ne fonctionne pas avec les listes.
a = [19, 9, 8]
b = a.copy()
a[0] = 2
print(a)
print(b)
>>>[2, 9, 8]
>>>[19, 9, 8]
Liste par compréhension
matiere = "Numérique"
tableau = [lettre for lettre in matiere]
print(tableau)
>>>['N', 'u', 'm', 'é', 'r', 'i', 'q', 'u', 'e']
carres_pairs = [k**2 for k in range(10) if k**2 % 2 == 0] # if permet une sélection à la création
print(carres_pairs)
>>>[0, 4, 16, 36, 64]
Tableaux à plusieurs dimensions : listes de listes
a = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print(a[1])
print(a[2][2])
>>>[4, 5, 6]
>>>9
Les parties de listes : le slicing
Le découpage d'une liste est appelé le sclicing.
ma_liste = [0,1,2,3,4,5,6,7,8,9]
print(ma_liste[:5]) # 5 est l'indice de fin du slice [exclu]
print(ma_liste[5:]) # 5 est l'indice de début du slice [inclu]
print(ma_liste[2:6])
print(ma_liste[::2]) # on indique un pas pour parcourir la liste
print(ma_liste[::-2]) # on indique un pas pour parcourir la liste à l'envers
>>>[0, 1, 2, 3, 4]
>>>[5, 6, 7, 8, 9]
>>>[2, 3, 4, 5]
>>>[0, 2, 4, 6, 8]
>>>[9, 7, 5, 3, 1]
Résumé de cours sur les tableaux
Methode | Description |
---|---|
del ma_liste[n] |
Supprimme l'élément qui est en position n dans ma_liste . |
ma_liste.remove("a") |
Supprime les éléments qui ont la valeur "a" dans ma_liste . |
ma_liste.count("a") |
Compte le nombre de "a" dans ma_liste . |
ma_liste.index("a") |
Repère la première position de "a" dans ma_liste . |
ma_liste1 + ma_liste2 |
Les éléments de ma_liste1 se rajoutent à ma_liste2 . |
ma_liste[-1] |
Donne le dernier élément de ma_liste . |
ma_liste[:n] |
Donne la sous-liste formée des n premiers éléments de ma_liste . |
ma_liste[n:] |
Donne la sous-liste privée des n premiers éléments de ma_liste . |
ma_liste.split(",") |
Transforme une chaine de caractère en une ma_liste . |
len(ma_liste) |
Compte le nombre d'éléments d'une ma_liste . |
ma_liste.append(i) |
Ajoute à la fin de ma_liste l'élément i. |
ma_liste.split(",") |
Transforme une chaine de caractère en une ma_liste . |
for element in ma_liste: |
for est conçue pour parcourir les éléments de ma_liste . |
ma_liste[i] |
Afmon_garage l'élément de ma_liste d'indice (d'index) i. |
ma_liste[] |
Créé une ma_liste vide. |
ma_liste.sort() |
Trier la liste ma_liste dans l'ordre croissant ou alphabétique |
ma_liste.reverse() |
Inverser les éléments de la liste ma_liste (le dernier élément sera le premier, etc.) |
Les tuples en Python
Les tuples (« n-uplets » en français) correspondent aux listes à la différence qu'ils sont non modifiables (non mutable) : on ne peut réaffecter ses éléments ou en ajouter. Si vous essayez de modifier un tuple existant, l'interpréteur Python vous renverra une erreur. Les listes peuvent être modifiées , notamment lors de la copie de listes. Les tuples s'affranchissent de ce problème puisqu'ils sont non modifiables. En pratique, ils utilisent les parenthèses au lieu des crochets. Comme déjà dit ci-dessus, un tuple est une séquence. Voici un exemple très simple :
mon_tuple = (19, 10, 2, 9, 6)
Les propriétés des tuples sont assez identiques à celles des listes. La principale différence vient du fait qu’un tuple n’est pas modifiable.
Entrainement 1:
Créer avec une boucle «for» la liste «pairs» constituée des 10 premiers nombres pairs.
Aide : on commencera par initialiser «pairs» avec des 0.
Entrainement 2:
- Créer par compréhension la liste «carrés» constituée des carrés des nombres entiers naturels de 0 à 15 multiple de 3.
- proposer un programme qui supprime les multiples de 3
Entrainement 3:
Construire la liste des prénoms de nsi dans un tableaunsi[]
.
nsi =[ "alexandre","kaïs","leïa","cassandre","jasim",
"naïma","élisa","lucas","jade","léo","pierre","angélique","léa","matteo",
"taïlson","nicolas","hans","mathis"]
Construire la liste (tableau_nsi
des prénoms de 5 lettres ou moins à partir de la listensi
.
Entrainement 4:
Construire une fonction renvoyant le tuple (quotient, reste) de la division euclidienne de a par b.
Entrainement 5:
On donne la liste suivante : L = [200,123,14,18,6,19]
- Que renvoie les intructions suivantes ?
- len(L)
- L[1]
- L[3]
- L[6]
- . Que devient la liste L si on saisit l’instruction L[1] = 12 ?
Entrainement 6:
Ecrire une fonction echange_element(L,i,j)
prenant en arguments une liste L et deux entiers naturels i et j et renvoyant une liste ou les éléments d’indices i et j de L, s’ils existent, ont été permutés.
Exemples :
>>> echange_element([19, 4, 9, 10, 6, 2, 3],1,2)
[19, 9, 4, 10, 6, 2, 3]
>>> echange_element([19, 4, 9, 10, 6, 2, 3],0,2)
[9, 4, 19, 10, 6, 2, 3]
>>> echange_element([2,3,5,2,4],5,6)
[19, 4, 9, 10, 6, 3, 2]
Entrainement 7 :
Constituez une liste semaine contenant le nom des sept jours de la semaine.
En utilisant une boucle, écrivez chaque jour de la semaine ainsi que les messages suivants :
- Au travail s'il s'agit du lundi au jeudi ;
- Chouette c'est vendredi s'il s'agit du vendredi ;
- PAs de repos ce week-end, j'ai plein de devoirs s'il s'agit du samedi ou du dimanche.
Entrainement 8 :
La liste ci-dessous représente la séquence d'un brin d'ADN :
["A","C","G","T","T","A","G","C","T","A","A","C","G"]
Créez un script qui transforme cette séquence en sa séquence complémentaire.
la séquence complémentaire s'obtient en remplaçant A par T, T par A, C par G et G par C.