Académique Documents
Professionnel Documents
Culture Documents
Environnement (IAGE)
Objectifs : A la fin de cette leçon chaque étudiant en classe de 1 ère Année Agro doit
être capable de :
Introduction
Dans les chapitres précédents, nous avons appris à déclarer et utiliser sommairement
les fonctions en Python. Dans ce nouveau chapitre nous appesantirons un plus sur
cette notion. Afin de mieux manipuler les concepts avancés liés à l’utilisation des
fonctions nous introduirons également dans ce chapitre la notion de liste.
INGENIEUR Agro-Industrie, GÉOLOGIE &
Environnement (IAGE)
I. La notion de Liste
1. Notion de structure de données
Une Structure de données est une manière d’organiser les données pour les traiter plus
facilement. C’est l’implémentation d’un type abstrait. Un type abstrait est une
spécification mathématique d’un ensemble de données et de l’ensemble des opérations
qu’on peut effecteur sur elle. Une structure de données définie à cet effet comment
organiser les données, comment y avoir accès, quelles sont les opérations qu’on peut
appliquer sur ces données. On dénombre différente structure de données : variable,
constante, tableau, enregistrement, liste, etc.
3. Liste en python
Les listes en Python, font partir des objets mutables. C’est quoi un objet mutable ?
Python désigne comme mutable tout objet qui n’est pas immuable, c’est à dire qui
peut être modifié après sa création. Au premier chapitre, nous avons présenté un
ensemble de type d’objet. Tous ces types d’objets que nous avons présentés sont des
types immuables. Ainsi, après avoir créé un objet de type int, float, decimal, str,
complex, il n’est plus possible de les modifier.
En Python, les listes sont séquences, c’est-à-dire une collection ordonnée d’objets de
mêmes types ou de types différents séparés par des virgules. Les types en Python sont
de type list.
Exemple
>>> liste = list() # une liste vide avec aucun élément
>>> liste
[]
>>> liste = list([1, 3]) # une liste deux éléments
INGENIEUR Agro-Industrie, GÉOLOGIE &
Environnement (IAGE)
>>> liste
[1, 3]
>>> liste = [1, 3, 5, 3+2j] #Une liste de 3 entier et un complexe
>>> liste
[1, 3, 5, (3+2j)]
>>> liste = [1, 3, 5, 3+2j, "bonjour", 'Python', 3.14] # une liste d’objet
de type différent
>>> liste
[1, 3, 5, (3+2j), 'bonjour', 'Python', 3.14]
>>> liste = [1, 3, 5, 3+2j, [1, 3+3j], 3.14, []] # Une liste peut contenir
d’autre liste évidemment !
>>> liste
[1, 3, 5, (3+2j), [1, (3+3j)], 3.14, []]
append. La méthode append permet d’ajouter un élément dans une liste. Cela
est possible parce qu’une liste est un objet mutable c’est-à-dire qui peut
changer après sa création (Et oui ! la répétition est la mère des écoles ).
Voyons ça dans un exemple.
>>> liste = []
>>> liste
[]
>>> liste.append(1)
>>> liste
[1]
>>> liste.append("ok")
>>> liste
[1, 'ok']
clear. La méthode clear permet de retirer tous éléments d’une liste. Un exemple
pour illustrer tout ça.
>>> liste = [1, 3, 5, 3+2j]
>>> liste
[1, 3, 5, (3+2j)]
>>> liste.clear()
>>> liste
[]
copy. La méthode copy, retourne une copie de tous les éléments d’une liste.
Une telle copie est appelée dans le jargon du langage Python Shallow Copy. Ce
qui est différent d’une deep copy. Pour l’instant ne cherchons pas à savoir la
différence, voyons plutôt comment utiliser la fonction copie dans un exemple.
INGENIEUR Agro-Industrie, GÉOLOGIE &
Environnement (IAGE)
Pour convertir une chaîne en liste, on la découpe suivant un séparateur qu’on aura
choisi, à l’aide de la fonction split. Sans argument, la fonction split utilise l’espace
comme séparateur. Voyons un peu ça dans un exemple.
>>> chaine = "Bellle marquise, Vos beaux yeux, me font mourir d'amour"
INGENIEUR Agro-Industrie, GÉOLOGIE &
Environnement (IAGE)
1. Passage d’argument
En programmation on distingue deux types de passage des arguments à une fonction.
Le passage par référence et le passage par valeur.
effectif après l’utilisation de la fonction. En python tous les objets immuables sont
passés par valeur. Voyons un peu tout cela à travers un exemple.
>>> def parvaleur(val):
if val > 0 :
val = 12
print(f"La valeur de la variable val est {val}")
else:
val = -12
print(f"La valeur de la variable val est {val}")
>>> value = 2
>>> parvaleur(value)
La valeur de la variable val est 12
>>> value
2
Comme on peut le voir dans cet exemple, toute modification effectuée sur le
paramètre effectif value, dans le corps de la fonction parvaleur, n’a aucune
répercussion après l’exécution de la fonction. En effet, cela est possible parce que la
fonction ne travaille pas avec l’objet passé en argument, mais plutôt avec une copie de
cet objet, ainsi toute modification de la copie, n’affecte pas l’objet copié.
Dans cet exemple nous voyons que toute modification effectuée sur le paramètre
effectif liste, dans le corps de la fonction parreference, est valable après l’exécution
de la fonction. En effet, cela est possible parce qu’en Python, lorsque l’objet est
mutable, c’est la référence de l’objet qui est utilisé comme argument. Ainsi, toute
modification effectuée sur l’objet indiquant cette référence est valable même après
l’exécution de la fonction. L’exemple suivant démontre cela.
>>> def parreference(val):
print(f"{id(val)}")
if(len(val) > 0 ):
val.pop()
else:
val.append(1)
Dans cet exemple, nous voyons bien que l’identifiant de l’objet utilisé comme
argument est le même que l’objet passé comme argument.
En python, toute variable déclarée à la racine d’un module est globale dans tout ce
module. Une variable déclarée dans une fonction ne sera visible que dans cette
fonction, elle est donc locale à la fonction. Voyons tout cela dans un exemple.
>>> x = "hello"
... print x
>>> test()
hello
INGENIEUR Agro-Industrie, GÉOLOGIE &
Environnement (IAGE)
>>> x = False
... x = "hello"
...
>>> test()
>>> x
False