0% ont trouvé ce document utile (0 vote)
4 vues31 pages

Listes Python : Concepts et Exemples

Transféré par

danielvale1009
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues31 pages

Listes Python : Concepts et Exemples

Transféré par

danielvale1009
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2 - Listes

Python pour sciences économiques

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%.

Question: Quel est le capital final?

2 Papier, crayon, calculette, 3 minutes


Les listes - définition
Une liste t est un ensemble d’éléments, séparés par des virgules, et entourés par
des crochets (e.g., t=[5,3,"tom"]). En Python, on accède à un élément avec
son indice, i.e., la position dans la liste depuis le début (e.g., t[0] pour le
premier élément) ou depuis la fin (e.g., t[-1] pour le dernier élément).

1 #créer une liste


2 ma_liste=[1, 2, 3,"bonjour", True]
3 #imprimer la
4 print(ma_liste)
5 #imprimer le 2ième élément
6 print(ma_liste[1])
7 #assigner une valeur
8 #essayer un index trop grand
9
3
Les listes - mémoire
Lorsque deux variables de type list sont déclarées (b = a = [1,2,3]), cela
signifie en réalité que les deux variables pointes sur le même objet liste et non
qu’elles ont chacune une copie de la liste. Ceci implique que lorsque on change
un élément de la liste b, par exemple b[0]=2, la liste a sera aussi affectée, car
c’est en fait la même.
1 a = [1,1,1]
2 b = a
3 b[0]=0
4 print(id(a),a,id(b),b)
5
6
7
8
9
4
Les listes - in
Pour vérifier si un élément est dans une liste on peut utiliser l'opérateur in.

1 ma_liste=["bonjour", "salut", "ciao","salut"]


2 if "bonjour" in ma_liste:
3 print("bonjour est dans la liste")
4
5
6
7
8
9
5
Les listes - append(elmnt)
Le plus souvent les listes sont construites dynamiquement en utilisant une boucle.
Pour cela on peut utiliser la méthode append(elmnt) pour ajouter un élément
elmnt.

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 ma_liste=["bonjour", "salut", "ciao"]


2 print(sorted(ma_liste))
3 print(len(ma_liste))
4
5
6
7
8
9
8
Les listes - fonctions statistiques
Python offre des fonctions statistiques au travers d'une librairies "statistics" qu'il
faut importer.

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.

1 ma_liste=["bonjour", "salut", "ciao"]


2 for e in ma_liste:
3 print(e)
4
5
6
7
8
9
10
Les listes - for index, elmnt in enumerate(list)
La boucle for elemnt in list ne permet pas d’accéder aux indices. Une
autre fonction retourne à la fois les éléments et leur indice c’est la fonction for
i, elmnt in enumerate(list)

1 ma_liste=["bonjour", "salut", "ciao"]


2 for i, e in enumerate(ma_liste):
3 print(i,e)
4
5
6
7
8
9
11
Les listes - pop(index) remove(elmnt)
On peut utiliser pop(pos) pour enlever un élément à une position pos. La
méthode remove(elmnt) enlève le premier élément qui correspond à elmnt.
Attention, modifier une liste pendant une itération peut poser problème!

1 ma_liste=["bonjour", "salut", "ciao","salut"]


2 for e in ma_liste:
3 ma_liste.remove(e)
4 print(ma_liste)
5
6 while len(ma_liste)>0:
7 ma_liste.pop(0)
8
9
12
Problème 4 - Python
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)?

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

Question: dans quelle branche avez-vous la meilleure moyenne?

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"

Question: Combien de noms différents y a-t-il?


21
Exercice 2 Corrigé
Réponse: 10

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 print(noms)
7 print(len(noms))

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"

Question: Quel est l'e-mail pour johnathan?


Tips: (1) traiter un nom comme une liste de caractères. (2) pour traiter un nombre comme un string, utiliser la fonction str(), e.g., str(21).
26
Exercice 4 Corrigé
Réponse: john40@[Link]

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

Vous aimerez peut-être aussi