Les listes sont des incontournables de la programmation. Tant qu'on a que quelques informations à stocker, on peut les mettre dans des variables mais on ne peut pas s'amuser à rentrer une à une 1000 informations dans une variable individuelle... A la place, on les met dans une liste que l'on pourra manipuler et c'est cette liste qu'on sauvegarde dans une variable.
ma_liste_de_nombres = [ 1, 4, 9, 3, 1, 2 ]
ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]
ma_liste_de_coordonnées_de_vecteurs = [ (1,1) , (0,1) , (1,6)]
ma_liste_bordélique = ["un texte", 18, 5.4, True, (1,0)]
la_liste_vide = []
.append(obj)
: à rajouter derrière la liste à qui on veut rajouter obj
. Important : Elle modifie directement la liste et ne renvoie rien.>>>ma_liste_de_course.append("brosse pour effacer")
>>>ma_liste_de_course
[ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers", "brosse pour effacer" ]
.extend(autre_liste)
: à rajouter derrière la liste à qui on veut rajouter à la suite la deuxième_liste
. Comme pour append, elle modifie directement la liste et ne renvoie rien.>>>ma_liste_de_nombres.extend([ 6, 12, 14])
>>>ma_liste_de_nombres
[ 1, 4, 9, 3, 1, 2, 6, 12, 14 ]
liste1 + liste2
: Comme pour les chaines de caractères, le signe + va permettre de mettre les deux listes bout à bout, tout comme extend mais à un énorme différence près : avec extend, la première liste devient le résultat alors que dans ce cas ci, il faut mettre le résultat dans une variable pour le sauvegarder. C'est comme pour 3+5, si on ne met pas le résultat dans une variable, on ne pourra rien en faire.>>>liste = liste + autre_liste
>>>liste_chiffres_pairs=[0 ,2 ,4 ,6 ,8 ]
>>>liste_chiffres_impairs=[1, 3, 5, 7 ,9]
>>>liste_chiffres_pairs + liste_chiffres_impairs
[0 ,2 ,4 ,6 ,8, 1, 3, 5, 7 ,9 ]
liste * n
: crée une nouvelle liste où la liste
est répétée en boucle n
fois.>>> [1] * 5
[1, 1, 1, 1, 1]
>>> [1, 2, 3]* 3
[1, 2, 3, 1, 2, 3, 1, 2, 3 ]
range(n)
: crée une liste de n nombres allant de 0 à n-1. Et oui en informatique, il va falloir prendre l'habitude de toujours commencer à 0 et du coup finir à n-1 si on veut n nombres en tout.range(n1,n2)
: crée une liste de nombres allant de n1 à n2-1.range(n1,n2,pas)
: crée une liste de nombres allant de n1 à n2-1 en sautant de pas en pas.range(4)
est la liste de nombres [0, 1, 2, 3 ]range(3,6)
est la liste de nombres [3, 4, 5 ]range(1,9,3)
est la liste de nombres [1, 4, 7] (de 3 en 3 en partant de 1)range(3,0,-1)
est la liste [3, 2, 1 ] (un pas négatif permet de compter à l'envers ce qui est très pratique des fois)liste[n]
: Permet de récupérer l'élément d'indice n. Attention : le premier élément est d'indice 0 !>>> ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]
>>> ma_liste_de_courses[1]
"piles"
>>> ma_liste_de_courses[-1]
"claviers"
liste[n1:n2]
: Permet de récupérer la liste des éléments d'indice compris entre n1 et n2-1.>>> ma_liste_de_courses[1 : 3]
["piles" , "souris pour la salle info"]
>>> ma_liste_de_courses[:3]
[ "stylos rouges" , "piles" , "souris pour la salle info" ]
liste[n]= val
: Permet de modifier la valeur de l'élément d'indice n.>>> ma_liste_de_courses[1] = "piles rechargeables"
>>> ma_liste_de_courses
[ "stylos rouges" , "piles rechargeables" , "souris pour la salle info" , "claviers" ]
len(liste)
: Donne la longueur de la liste (le nombre d'éléments.>>> len(ma_liste_de_courses)
4
liste.remove(element)
: Retire element
de la liste
. Attention, il ne retire que la première occurrence, si element
apparait plusieurs fois, il faut l'enlever plusieurs fois.liste.reverse()
: Renverse l'ordre de la liste.liste.count(element)
: Donne le nombre de fois où element
se trouve dans la liste.sum(liste)
: Donne la somme des éléments de la liste lorsque c'est une liste de nombres bien entendu.liste.sort()
: Trie liste
dans l'ordre croissant. Si on veux avoir un tri dans l'ordre décroissant il faut écrire liste.sort(reverse=True)
.sorted(liste)
: Renvoie liste
triée dans l'ordre croissant. Si on veux avoir un tri dans l'ordre décroissant il faut écrire sorted(liste,reverse=True)
.liste.sort()
modifie liste
ce qui veut dire qu'on perd notre liste de départ alors que sorted(liste)
ne modifie pas liste, elle crée une nouvelle liste des éléments de liste
triéeelement in liste
: Renvoie True si element
est dans la liste et False sinon.>>> "claviers" in ma_liste_de_courses
True
>>> "stylos" in ma_liste_de_courses
False
if "piles" in ma_liste_de_courses:
ma_liste_de_courses.remove("piles")
if "brosse" not in ma_liste_de_courses :
ma_liste_de_courses.append("brosse")
>>> liste_nombres = [1, 3, 7]
>>> for nombre in liste_nombres :
>>> print(nombre**2)
1
9
49
enumerate
et alors faire comme ceci :>>> for indice, element in enumerate(liste):
#choses à faire avec l'indice et l'élément
texte.split(separateur)
. Crée une liste des mots du texte
qui sont compris entre les separateur
. Si on met juste .split()
, il prend comme séparateur un espace. Donnons des exemples pour clarifier :>>> "ab-cd-e/fg-h-ij kl".split( "-" )
[ "ab", "cd", "e/fg", "h", "ij kl" ]
>>> "Deux mots, un-autre-mot , Unmot".split()
[ "Deux", "mots,", "un-autre-mot", ",", "Unmot" ]
separateur.join(liste)
: L'exact contraire de split(). Crée un texte à partir d'une liste
de mots en intercalant entre chaque mot le separateur
.>>> "/".join( ["Janvier", "Février", "Mars", "Avril" ])
"Janvier/Février/Mars/Avril"
>>> "<=>".join( [ "x² - 1 = 0", "x² = 1", "x = 1 ou x = -1"])
"x² - 1 = 0 <=> x² = 1 <=> x = 1 ou x = -1"
>>> "".join([ "3", ".", "1", "4", "1", "5", "9" ])
"3.14159"
>>> ma_liste_de_nombres = [1, 2, 3, 4, 5]
>>> [ n + 3 for n in ma_liste_de_nombres ]
[ 4, 5 ,6, 7, 8 ]
[ n+3 for n in range(1,6)]
.>>> sum( [ n**2 for n in range(1,11) ] )
385
>>> ma_liste_de_mots = [ "Cosinus", "Sinus", "Tangente", "Cotangente" ]
>>> [ len(mot) for mot in ma_liste_de_mots]
[7, 5, 8, 10]
>>>[ mot +" hyperbolique" for mot in ma_liste_de_mots ]
[ "Cosinus hyperbolique", "Sinus hyperbolique", "Tangente hyperbolique", "Cotangente hyperbolique"]
>>> [ n**2 for n in range(16) if n%2==0]
[0, 4, 16, 36, 64, 100, 144, 196]
>>> ma_liste_de_mots= ["maths", "info", "python", "exposant", "alpha", "fonction", "parabole", "equilateral", "orthogonal", "cercle", "isocèle" ]
>>> [ mot[0] for mot in ma_liste_de_mots if mot[0] in "aeiouy"]
['i', 'e', 'a', 'e', 'o', 'i']
>>> ma_liste=[ 1, 2, 3]
>>> sauvegarde= ma_liste
>>> ma_liste[0]=4
>>> print(sauvegarde)
[4 ,2, 3]
sauvegarde
). Puis je modifie le premier terme de ma liste d'origine et en affichant ma sauvegarde, je vois que ma sauvegarde est modifiée aussi !sauvegarde= list(ma_liste)
ou bien sauvegarde= ma_liste.copy()
. Cela créera une vraie copie de notre liste qui sera sans lien avec celle d'origine.>>> grille = [["O", "X", "O"], ["O", "X", "X"], ["X", "O", "O"]]
grille[1][2]
car les listes commencent à 0 donc il faut penser à décaler d'un cran et de plus, grille[1]
est la liste ["O", "X", "X"]
, c'est donc naturel que pour récupéré le troisième élément, on écrive grille[1][2].