Python Arrays List
Python Arrays List
• Arrays
• Collections
– Lists
– Tuples
– Sets
– Dictionaries
3
Les Tableaux
• En programmation, un tableau est une collection d’éléments du
même type. Les tableaux sont populaires dans la plupart des
langages de programmation tels que Java, C/C++, JavaScript,
etc. Cependant, Python n’a pas de type de données spécifique
pour représenter les tableaux.
• Les éléments suivants peuvent être utilisés pour représenter des
tableaux en Python:
5
An Array is …
• a container which can hold a fixed number of items, and
these items should be of the same type.
– Each item stored in an array is called an element.
– Each location of an element in an array has a numerical index, which is
used to identify the element.
6
Lecture Overview
• Arrays
– Création
– L’accès
– Modification
– Parcourir
– Ajout
– Suppression
• Collections
– Lists
– Tuples
– Sets
– Dictionaries 5
Création d’un Tableaux en python
• Un module est une bibliothèque ou un fichier contenant des fonctions et
des classes prêtes à l'emploi.
• Python dispose de modules intégrés, comme math, datetime, et ici, array.
• Pour utiliser les fonctionnalités d'un module, on utilise l'instruction import
• Nous devons importer le module « array » pour créer des tableaux.
Ici, nous avons créé un tableau de type double. La lettre ‘d’ est un code
de type. Cela détermine le type du tableau lors de la création.
Type
Code de type Signification Type C Exemple
Python
'b' Entier signé sur 1 octet int signed char -128 à 127
Sortie: 3
Modifier la valeur d’un élément
• Pour modifier la valeur d’un élément spécifique, referez-
vous au numéro d’index. L’exemple suivant change le
deuxième élément:
tab[1] = 100
print(tab)
Sortie: array(‘i’, [1, 100, 3, 4, 5, 6])
Parcourir un tableau en Python
• Parcourir les éléments du tableau en utilisant la boucle
for. L’exemple suivant affiche tous les éléments du
tableau, un par un:
Sortie :
Vérifier si un élément existe dans un
tableau
• Pour déterminer si un élément spécifié est présent dans
un tableau, utilisez le mot clé in. L’exemple suivant vérifie
si le nombre 5 est présent dans le tableau:
Sortie: 6
Ajouter des éléments au tableau
1- La méthode append():
• Pour ajouter un élément à la fin du tableau, utilisez la méthode append().
• L’exemple suivant ajoute le nombre 7 en utilisant la méthode append():
Syntaxe : [Link](elmnt)
import array
T= [Link]('i', range(1, 10))
print("Tableau initial: ",T)
[Link](100)
print("Après append :",T)
[Link](range(200, 205))
print("Après extend : ",T)
Exercice 1 : Proposer un programme en python
qui permet d’insérer une valeur x à une position p
du tableau T [10,20,30,40,50]
[Link](4)
print(tab)
9
Converti un Array 2D à une List
import array
# Création d'un tableau 2D comme une liste de tableaux 1D
array_2D = [
[Link]('i', [1, 2, 3]),
[Link]('i', [4, 5, 6]),
[Link]('i', [7, 8, 9])
]
print("Tableau 2D :")
for row in array_2D:
print([Link]() )
Sortie : Tableau 2D :
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
9
Converti un Array 3D à une List
import array
# Création d'un tableau 3D comme une liste de tableaux 2D
array_3D = [
[[Link]('i', [1, 2, 3]), [Link]('i', [4, 5, 6])],
[[Link]('i', [7, 8, 9]), [Link]('i', [10, 11, 12])], Sortie : Tableau 3D :
] [4, 5, 6]
print([Link]() )
print(array_3D[1][0][2])
9
Remarque
• Le module array ne prend pas en charge directement des tableaux multidimensionnels comme
les bibliothèques spécialisées telles que NumPy.
• Pour manipuler facilement des tableaux 2D ou 3D, NumPy est généralement recommandé car il
offre un support natif et des outils efficaces pour ces structures.
import numpy as np
array_3D = [Link]([
[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18]]
])
print("Tableau 3D avec NumPy :")
print(array_3D)
9
Lecture Overview
• Arrays
• Collections
– Lists
– Tuples
– Sets
– Dictionaries
7
A Collection Groups Similar Things
• List: ordered
• Set: unordered, no duplicates
• Tuple: unmodifiable list
• Dictionary: maps from values to values
Example: word → definition
What is a List?
• A list is an ordered sequence of values, where each
value is identified by an index.
30
List Creation
• Use square brackets to specify a list.
• Separate each element with a comma.
e = [] # empty list
a = [3, 4, 5]
b = [ 5, 3, 'hi' ]
c = [ 4, 'a', a ]
x=[1,’bien’,20.25,3,‘ahmed']
Méthode 2
L = []
for i in range(0,10):
[Link](i**2)
print(L)
Exemple 1-2
38
Slicing : Accès aux éléments d'une liste
Exemples :
print(x[0]) #le premier élément de la liste
print(x[-1]) #le dernier élément de la liste
x=[61,’142′,3,’k’,1,’f’]
print(x[0:3]) #les éléments entre l’index 0 et l’index 2
print(x[1:]) #les éléments après l’index 0
print(x[:2]) #les éléments avant l’index 2
39
Accès aux éléments d'une liste
Exercice :
Soit L une liste remplie par des données saisies au clavier.
On veut créer deux listes L1 et L2 de la manière suivante :
– L1 est la copie de la première moitié de L
– L2 est la copie de la deuxième moitié de L
40
Traitement classiques sur les
listes
• Insertion
• Removal
• Replacement
• Rearrangement
41
List Insertion
• [Link](x)
– Extend the list by inserting x at the end
• [Link](L)
– Extend the list by appending all the items in the argument list
• [Link](i, x)
– Insert an item before a given position.
– [Link](0, x) inserts at the front of the list
– [Link](len(a), x) is equivalent to [Link](x)
42
List Concatenation using + operator
43
List Insertion: Examples
Python statement Content of list1
>>> list1[7]
[10, 20]
>>> list1[7][0]
10
>>> list1[7][1]
20 24
List Insertion: Extend
[Link]() : Ajoute à la fin d’une liste, mais l’argument devrait
être un itérable.
Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)
[Link](['taza','nadour','ouajda'])
print(Villes)
# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat', 'taza',
'nadour', 'ouajda']
45
List Insertion: Extend
[Link](, ) : Pour ajouter un élément à la fin de la liste, on
peut utiliser la méthode append. Si on veut insérer l’élement
à une position spécifique, on doit utiliser la méthode insert.
Cette méthode insère l’objet dans la liste a à spécifié.
Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
[Link](1,‘Marrakech')
print(Villes)# ['safi', ‘Marrakech', 'agadir', 'tanger', 'fes',
'casa', 'Rabat']
46
List Removal
• [Link](x)
– Remove the first item from the list whose value is x
– It is an error if there is no such item
• [Link]([i])
– Remove the item at the given position in the list, and return it.
– If no index is specified, [Link]() removes and returns the last item in
the list.
47
List Removal - Examples
Python statement Content of list1
48
List Removal - Examples
[Link]() : Supprime l’objet de la liste a. Si n’est pas
dans un, une exception est levée :
Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
[Link]('dakhla')
print(Villes)# ['safi', 'dakhla', 'agadir', 'tanger', 'fes', 'casa',
'Rabat']
49
List Removal - Examples
[Link](index=-1) : Cette méthode diffère de .remove () de
deux manières:
1- Vous spécifiez l’index de l’élément à supprimer, plutôt que
l’objet lui-même.
2- La méthode renvoie une valeur : l’élément qui a été
supprimé.
Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
v=[Link](1)
print(v)#agadir
print(Villes)# ['safi', 'tanger', 'fes', 'casa', 'Rabat']
50
List Replacement
• mylist[index] = newvalue
51
List Slicing
mylist[startindex : endindex] evaluates to a
sublist of the original list
– mylist[index] evaluates to an element of the original list
29
List Slicing: Examples
test_list = ['e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6']
30
List Rearrangement
• [Link]()
– Sort the items of the list, in place.
– “in place” means by modifying the original list, not by creating a new
list.
• [Link]()
– Reverse the elements of the list, in place.
31
Sorting
hamlet = "to be or not to be that is th question".split()
print("hamlet:", hamlet)
print("sorted(hamlet):", sorted(hamlet))
print("hamlet:", hamlet)
print("[Link]():", [Link]())
print("hamlet:", hamlet)
print("[Link]():", [Link]())
print("hamlet:", hamlet)
32
Sorting
hamlet: ['to', 'be', 'or', 'not', 'to', 'be', 'that', 'is',
'the', 'question']
[Link](): None
hamlet: ['be', 'be', 'is', 'not', 'or', 'question', 'that',
'the', 'to', 'to']
[Link](): None
hamlet: ['to', 'to', 'the', 'that', 'question', 'or', 'not',
'is', 'be', 'be']
33
Sorting Algorithms Revisited
39
Bubble Sort
alist = [54,26,93,17,77,31,44,55,20]
bubbleSort(alist)
print(alist)
41
Insertion sort
42
Insertion Sort
def insertionSort(alist):
for index in range(1,len(alist)):
currentvalue = alist[index]
position = index
alist[position]=currentvalue
alist = [54,26,93,17,77,31,44,55,20]
insertionSort(alist)
print(alist)
43
Merge Sort
• Merge sort is a prototypical divide-and-conquer
algorithm.
– Split list into sub-lists in two until you reach pair of value
– Sort/swap pair of values if needed
– Merge and sort sub-lists
and repeat process until
you merge to the full list.
def mergeSort(L):
if len(L)<2:
return L[:]
else:
middle = len(L)//2
left = mergeSort(L[:middle])
right = mergeSort(L[middle:])
return merge(left, right)
a = mergeSort([2,1,3,4,5,-1,8,6,7])
46
Three Ways to Define a List
• Explicitly write out the whole thing:
squares = [0, 1, 4, 9, 16, 25, 36, 49]
something
that can be
iterated
49
Semantics of a comprehension
result = []
for x in seq1:
for y in seq2:
if sim(x,y) > threshold:
[Link]( (x,y) )
… use result …
50
Cubes of the first 10 natural numbers
Goal:
Produce: [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
With a loop:
cubes = []
for x in range(10):
[Link](x**3)
53
Making a Matrix
Goal: A matrix were each element is the sum of it's row and column
numbers.
With a loop:
58
Normalize a List
With a loop:
num_list = [6,4,2,8,9,10,3,2,1,3]
total = float(sum(num_list))
for i in range(len(num_list)):
num_list[i] = num_list[i]/float(total)
59
Ternary Assignment
flag = False
if x > threshold:
flag = True
62
Ternary Assignment
Ternary Expression
Three elements
63
Ternary Assignment
flag = True if x > threshold else False
Result if true Result if false
Condition
64
Ternary Assignment
the_list = []
for i in range(16):
the_list.append('even' if i%2 == 0 else 'odd')
65
Parcourir une liste
# Méthode 1 : x =element de la liste
L = ['I did it all', 4, 'peace']
for x in L:
print(x)
# Méthode 2 : I = indice
for i in range(len(L)):
print(L[i])
77
List Creation: Example - 3
def findExtremeDivisors(n1, n2):
"""Assumes that n1 and n2 are positive ints
Returns a list containing the smallest common
divisor > 1 and the largest common divisor
of n1 and n2"""
minVal = None The None keyword is used to define
maxVal = None a null value, or no value at all.
80
List Expression Examples
>>> ["four", "score", "and", "seven", "years"][2]
'and’
81
List Lookup
• Extracting part of the list:
– Single element: mylist[index]
– Sublist (“slicing”): mylist[startidx : endidx]
• Find/lookup in a list
– x in mylist
• Evaluates to a boolean value
– [Link](x)
• Return the int index in the list of the first item whose value is x.
It is an error if there is no such item.
– [Link](x)
• Return the number of times x appears in the list.
82
List Lookup: Exercise
def index(somelist, value):
"""Return the position of the first occurrence of
the element value in the list somelist.
Return None if value does not appear in
somelist."""
i = 0
for c in somelist:
if c == value:
return i
i = i + 1
return None
gettysburg = ["four", "score", "and",
”seven", "years", "ago"]
index(gettysburg, "and") # 2
index(gettysburg, "years”) # 4
[Link]('seven') # 1
83
Exercices :
Exercice1 :
Nous allons lire les notes de anas et amine dans n
matières (coefficient =1 pour chaque matière). on veut
afficher les moyennes d’Anas et Amine puis le nom de
celui ayant la meilleure moyenne
Exercice 2 :
Refaire l’exercice 1 avec l’utilisation de la fonction sum
Les méthodes sur les listes
Le type liste dispose de méthodes supplémentaires. Voici toutes les méthodes des
objets de type liste :
[Link](x) : Ajoute un élément à la fin de la liste. Équivalent à a[len(a):] = [x].
[Link](iterable) : Étend la liste en y ajoutant tous les éléments de l’itérable.
Équivalent à a[len(a):] = iterable.
[Link](i, x) : Insère un élément à la position indiquée. Le premier argument est la
position de l’élément courant avant lequel l’insertion doit s’effectuer, donc
[Link](0, x) insère l’élément en tête de la liste et [Link](len(a), x) est équivalent à
[Link](x).
[Link](x) : Supprime de la liste le premier élément dont la valeur est égale à x.
Une exception ValueError est levée s’il n’existe aucun élément avec cette valeur.
[Link]([i]) : Enlève de la liste l’élément situé à la position indiquée et le renvoie en
valeur de retour. Si aucune position n’est spécifiée, [Link]() enlève et renvoie le
dernier élément de la liste (les crochets autour du i dans la signature de la méthode
indiquent que ce paramètre est facultatif .
[Link]() : Supprime tous les éléments de la liste. Équivalent à del a[:].
[Link](x[, start[, end]]) : Renvoie la position du premier élément de la liste dont
la valeur égale x. Une exception ValueError est levée si aucun élément n’est trouvé.
[Link](x) : Renvoie le nombre d’éléments ayant la valeur x dans la liste.
[Link](key=None, reverse=False) : Ordonne les éléments dans la liste (les
arguments peuvent personnaliser l’ordonnancement, voir sorted() pour leur
explication).
[Link]() : Inverse l’ordre des éléments dans la liste.
[Link]() : Renvoie une copie superficielle de la liste. Équivalent à a[:].
Sorting: strings vs. numbers
38
Les fonctions et les procédures
Introduction
• Les fonctions et les procédures fonctionnent sur le même principe. La
différence réside dans le fait qu'une fonction renvoie un résultat, une
procédure ne renvoie rien.
• Il s’agit d’écrire des morceaux de code réutilisables, appelés fonctions
– Les fonctions ne sont pas exécutées dans un programme tant qu'elles ne
sont pas « appelées » ou « invoquées » dans un programme.
• Les caractéristiques de la fonction :
– A un nom
– A des paramètres (0 ou plus)
– A une docstring (facultatif mais recommandé)
– A un corps
– renvoie quelque chose
61
Les fonctions et les procédures
Introduction
• Pour définir une fonction ou une procédure nous utilisons simplement le
mot clé def :
def ma_fonction():
print(" Hello World !!! “)
return True
61
COMMENT ÉCRIRE et
APPELER/INVOQUER UNE FONCTION
61
Les fonctions et les procédures
Exemple
61
Les fonctions
La portée des variables
La portée des variables est une notion importante dans la programmation.
En PYTHON, tout comme dans beaucoup d'autre langage, une variable peut
être locale ou globale.
Dans le premier cas, la variable n'existe qu'à l'intérieur de la
fonction(/procédure/...) où elle a été définie. Même si ailleurs dans le code
une variable porte le même nom, il s'agira néanmoins de deux variables
distinctes.
Cependant, il peut parfois être utile, même si cela n'est pas recommandé,
d'avoir une variable globale, autrement dit, accessible depuis n'importe où
dans le code.
Pour qu'une variable soit globale en PYTHON, il faut la définir au début du
code en utilisant le mot clé global.
De même au début de chaque fonction(/procédure /...), il faudra redéfinir
cette variable en globale pour que PYTHON comprenne que l'on veut faire
référence à la variable globale et non à une variable locale portant le même
nom.
61
La portée des variables
• Le paramètre formel est lié à la valeur du paramètre réel lorsque la
fonction est appelée
• Nouvelle portée/cadre/environnement créé lors de la saisie d'une fonction
• La portée est le mappage des noms aux objets
61
Les fonctions
La portée des variables
global ma_variable
...
def ma_procedure():
global ma_variable #j'appelle ici la variable globale
...
...
def ma_procedure2():
ma_variable = 3 #ici, c'est une variable locale
61
Les fonctions Built-in
Python has some built-in functions thatare available without
importing any package
L'interpréteur Python propose quelques fonctions et types natifs qui sont
toujours disponibles. Ils sont listés ici par ordre alphabétique.
61
Quelques fonctions prédéfinies
LEN
La commande len permet de connaître le nombre de caractères dans un
string ou encore le nombre d'éléments dans une liste
61
Quelques fonctions prédéfinies
Type
La commande type permet de connaître le type d'une variable.
Cette fonction est souvent utilisée afin de déterminer quel traitement est
le plus adapté à une variable donnée.
>>> mon_integer = 56321
>>> type(mon_integer)
<type 'int'>
INPUT
La fonction input permet, en ligne de commande, de demander à
l'utilisateur de renseigner des paramètres ou informations.
Il existe deux façons d'utiliser cette fonction:
>>>#Methode 1
>>>print (" Merci de renseigner votre nom: ")
>>>nom = input()
>>>#Methode 2
>>>nom = input(" Merci de renseigner votre nom: ")
>>>print(" votre nom est: ", nom)
61
Quelques fonctions prédéfinies
GETPASS
Le rôle de la fonction getpass est identique à la fonction input à
un détail près: la confidentialité.
61
Méthodes pour manipuler les chaines
>Changement de casse
61
Méthodes pour manipuler les chaines
>Mettre la première lettre en majuscule
>>> ma_chaine.split('l')
['He', '', 'o Wor', 'd']
>>> ma_chaine.join('l')
>>> ma_chaine
'Hello World'
61
Méthodes pour manipuler les chaines
>Trouver la position d'une lettre
>>> ma_chaine = 'Hello world'
>>> ma_chaine.find('w')
6
61
Aspect Liste Tuple Set Dictionnaire
Collection ordonnée et Collection ordonnée et Collection non ordonnée Collection de paires clé-
Définition
modifiable. immuable. et unique. valeur.
Accès aux éléments Par index Par index Par recherche d'éléments. Par clé