Listes Python : Concepts et Exemples
Listes Python : Concepts et Exemples
Adrian Holzer
1
Problème 4 - Papier
Vous avez un capital initial de CHF 10'000. Sachant que vous avez eu les
rendement suivants sur 10 ans: 5.9%, 1%, 4.87%, 3,5%, 5.5%, 3,8%, 0.03%,
5.8%, 4%, 5.76%.
1 ma_liste=[]
2 ma_liste.append("bonjour")
3 print(ma_liste)
4
5
6
7
8
9
6
Les listes - insert(pos, elmnt)
Il est également possible d’ajouter un élément à un autre endroit de la liste. Pour
cela on utilise la méthode insert(pos,elmnt) pour ajouter un élément elmnt
à une position pos.
1 ma_liste=[2,2,2,2]
2 ma_liste.insert(-10, "2333")
3 print(ma_liste)
4
5
6
7
8
9
7
Les listes - fonctions standards
Python offre des fonctions standards sur des listes comme la somme sum(), le
minimum min(), le maximum max(), la longueur len() ou le tri sorted()
1 import statistics
2 notes = [4,5,6,5,3,4]
3 moyenne = [Link](notes)
4 ecart_type = [Link](notes)
5 print(moyenne,ecart_type)
6
7
8
9
9
Les listes - for index in list
Pour parcourir les éléments d'une liste, Python offre l'opérateur for elemnt in
list.
13
Problème 4 - Python Corrigé
Calculez le rendement total ainsi que l'état de votre investissement de base de
CHF 10'340 sachant que vous avez eu les rendement suivants sur 10 ans: 5.9%,
1%, 4.87%, 3,5%, 5.5%, 3,8%, 0.03%, 5.8%, 4%, 5.76%.
Bonus: en quelle année le rendement était-il le plus élevé (en CHF)?
1 initial = 10340
2 rendements = [5.9, 1, 4.87, 3.5, 5.5, 3.8, 0.03, 5.8, 4, 5.5]
3 capital = initial
4 for t in rendements:
5 capital = capital * (1 + (t / 100))
6 print(capital, capital/initial)
7
8
9
14
Problème 4 - Python Corrigé
1 liste_taux = [0.059, 0.01, 0.047, 0.035, 0.055, 0.038, 0.0003, 0.058, 0.04, 0.0576]
2 initial = 10000
3 capital = initial
4 best=0
5 a=0
6 rendements=[]
7
8 for annee, taux in enumerate(liste_taux):
9 rendement=capital*taux
10 [Link](rendement)
11 capital = capital+rendement
12 print(annee+1, capital, rendement)
13 print("rendement: ", capital, ((capital-initial)/initial)*10,"%")
14
15 max_rendement=max(rendements)
16 for annee, rendement in enumerate(rendements):
17 if rendement == max_rendement:
18 print("meilleur rendement annee", annee+1, "de", "%.2f" % rendement)
15
Les listes - strings et listes
Les objets de type string sont en fait des listes immuables de caractères (pas
d'assignation possible)
1 mot="bonjour"
2 for lettre in mot:
3 print(lettre)
4 print(max(mot),len(mot),mot[1])
5
6
7
8
9
16
En résumé
• Les listes sont des structures de données flexibles
• Elles contiennent n éléments indexés des 0 à n-1
• Des nombreuses fonctions existent pour les manipuler comme append(),
insert(),sort()
• On peut les parcourir grâce à la syntaxe for elmnt in list:
17
TP Listes
18
Exercice 1
Vous avez reçu vos notes de Math, de Statistiques et d'Economie?
Math: 2,3,5,3,4,5.5,6,4.5,5,4,3.5,6,4.5,6,3.5,5,3.5,4.5,4
Statistiques: 4.5,5,3,5,3,4,6,5.5,4.5,6,4.5,2,5,4,3.5,6,4.5,5,3.5,6
Economie: 5.5,3.5,5,4.5,5,4,3.5,6,6,4.5,5,3.5,5,3.5,2
19
Exercice 1 Corrigé
Réponse: Statistiques
1 import statistics as s
2 notes_math = [2,3,5,3,4,5.5,6,4.5,5,4,3.5,6,4.5,6,3.5,5,3.5,4.5,4]
3 notes_stat=[4.5,5,3,5,3,4,6,5.5,4.5,6,4.5,2,5,4,3.5,6,4.5,5,3.5,6]
4 notes_eco = [5.5,3.5,5,4.5,5,4,3.5,6,6,4.5,5,3.5,5,3.5,2]
5 print("Math: ",[Link](notes_math))
6 print("Stat: ", [Link](notes_stat))
7 print("Eco: ", [Link](notes_eco))
8
20
Exercice 2
Vous avez reçu une liste de noms, créez un programme qui crée une nouvelle
liste sans doublons.
"john", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna",
"marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc",
"johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "john", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john",
"marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc",
"johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc","johnson",
"jones", "john", "marc", "johnson", "jones", "johna","johnathan", "john", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc",
"johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson",
"jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "john", "marc",
"johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson",
"jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones",
"marcel", "johna", "joey", "joel", "jimmy", "john", "marc","johnson", "jones", "john", "marc", "johnson", "jones", "johna","johnathan", "john", "marc", "johnson",
"jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones",
"marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel",
"johna", "joey", "joel", "jimmy", "john", "marc", "john", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones",
"john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john",
"marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc","johnson", "jones", "john", "marc",
"johnson", "jones", "johna","johnathan"
22
Exercice 3
Basé sur la liste précédente, on a une liste avec la fréquence de chaque nom,
comme dans l'exemple ci-dessous si on n’avait que deux noms. Le lien entre les
deux listes se fait avec les index. Le nom à l'index 0 de la liste noms a une
fréquence égale à la valeur de l'index 0 de la liste frequences, c’est-à-dire 2
dans l'exemple ci-dessous:
noms = ["jean", "marc"]
frequencies = [2,3]
Question: Donner le nom le plus fréquent et le moins fréquent (avec leur fréquence) ?
23
Exercice 3 Corrigé
Réponse: marc: 51, johnathan: 3
1 tous_les_noms = ["john", "marc", "johnson", ..."johnathan"]
2 noms=[]
3 for nom in tous_les_noms:
4 if nom not in noms:
5 [Link](nom)
6 frequences=[]
7 for nom_unique in noms:
8 count=0
9 for nom in tous_les_noms:
10 if nom == nom_unique:
11 count = 1 + count
12 [Link](count)
13 print(frequences)
14
24
Exercice 3 Corrigé
Réponse: marc: 51, johnathan: 3
1 tous_les_noms = ["john", "john", "marc", "johnathan", "johnathan","johnathan"]
2 noms=[]
3 for nom in tous_les_noms:
4 if nom not in noms:
5 [Link](nom)
6 frequences=[]
7 for nom_unique in noms:
8 count=0
9 for nom in tous_les_noms:
10 if nom == nom_unique:
11 count = 1 + count
12 [Link](count)
13 max_frequ=0
14 max_nom=""
15 min_frequ=frequences[0]
16 min_nom=noms[0]
17 for i, e in enumerate(frequences):
18 if e > max_frequ:
19 max_frequ=e
20 max_nom=noms[i]
21 if e < min_frequ:
22 min_frequ = e
23 min_nom= noms[i]
24 print(max_nom, max_frequ, min_nom, min_frequ)
25
Exercice 4
Vous avez reçu une liste de noms. Vous devez créer un programme qui génère
une adresse email pour chaque nom et l'ajoute à une liste d'email. Pour créer
l'email, on utilise les 4 premières lettres du prénom suivi de @[Link]. Si
l'email est déjà pris, on ajoute un nombre après les 4 lettres du prénom. On aura
par exemple john1@[Link] si john@[Link] est déjà pris. Si ces
deux sont déjà pris, alors on utilisera john2@[Link] et ainsi de suite. La
liste de noms est la suivante :
"john", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc",
"johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones",
"john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc",
"john", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones", "john", "marc",
"johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john", "marc", "johnson", "jones",
"john", "marc", "johnson", "jones", "johna", "marc", "johnson", "jones", "marcel", "johna", "joey", "joel", "jimmy", "john",
"marc","johnson", "jones", "john", "marc", "johnson", "jones", "johna","johnathan"
1 company = '@[Link]'
2 names = ["john", "marc", ..."johnathan"]
3 emails = []
4 for name in names:
5 short_name=""
6 for i in range(4):
7 short_name= short_name + name[i]
8 email = short_name + company
9 nombre = 1
10 while email in emails:
11 email = short_name + str(nombre) + company
12 nombre+=1
13 [Link](email)
14 print(emails)
27
Exercice 5
Vous êtes directeur de vente et vous devez évaluer vos collaborateurs en créant une liste
contenant une évaluation pour chacun d’entres eux. Vous avez une liste de collaborateurs et la
performance en pour-cent de leur portefeuille pour 2018 et 2019. Si leur portefeuille d'actifs a
augmenté de plus de 25 % en deux ans, ils devraient recevoir un "Bon". Si leur portefeuille
d'actifs a augmenté entre 12 et 25 %, ils reçoivent un "Normal", et si leur portefeuille a augmenté
de moins de 12 % en deux ans, ils reçoivent un "Mauvais". Le lien entre les listes se fait par
index. Ici, Marcel a fait une performance de 25% en 2018 et de 1% en 2019. Comme c'est
supérieur à 25%, il reçoit un "Bon".
collaborateurs = ["marcel", "johna", "joey", "joel", "jimmy", "john",
"marc","johnson", "jones"]
perf_2018 = [25, 12, 11, 18, 20, 19, -4, 0, 4]
perf_2019 = [1, 12, 1, 5, 3, 5.5, 29, 3, 6]
evaluations = ["Bon",?,?,?,?,?,?,?,?,?]
Question: Combien vont recevoir un "Bon", "Normal" et "Mauvais"?
28
Exercice 5 Corrigé
Réponse: Bon: 3, Normal: 4, Mauvais:2
1 asset_managers = ["marcel", "johna", "joey", ..."jones"]
2 perfs_2018= [25, 12, 11, 18, 20, 19, -4, 0, 4]
3 perfs_2019 = [1, 12, 1, 5, 3, 5.5, 29, 3, 6]
4 evals = []
5 for i, manager in enumerate(asset_managers):
6 perf_2018 = (perfs_2018[i]+100)/100
7 perf_2019 = (perfs_2019[i] + 100) / 100
8 print(manager, perf_2018 * perf_2019)
9 if (perf_2018 * perf_2019) > 1.25:
10 [Link]("Bon")
11 elif (perf_2018 * perf_2019) >= 1.12:
12 [Link]("Normal")
13 else:
14 [Link]("Mauvais")
15 print(evals)
29
Bibliographie
[Link] [Link]
30
Questions?
31