Fonctionnalités avancées¶
Génération d'une liste avec la compréhension de liste¶
- Permet de créer des listes à partir d'un itérateur
- Un itérateur est tout ce qui peut être parcouru dans un for-each
- Syntaxe 1: [ 'valeur de l'élélemnt' for 'varialbe de parcrous' in itérateur ]
- Syntaxe 2: [ 'valeur de l'élélemnt' for 'varialbe de parcrous' in itérateur if condition ]
In [1]:
Copied!
numbers = [0 for x in range(8)]
print("[0 for x in range(8)]", numbers)
numbers = []
for x in range(8):
numbers.append(0)
print("avec un for", numbers)
print("[x for x in range(4)] ->", [x for x in range(4)])
print("[x * 2 for x in range(4)] ->", [x * 2 for x in range(4)])
print("[x for x in range(4) if x % 2 == 0] ->",
[x for x in range(4) if x % 2 == 0])
print("[x + 2 for x in range(4) if x % 2 == 0] ->",
[x + 2 for x in range(4) if x % 2 == 0])
items = ["I", "love", "python"]
print(items)
print("[len(x) for x in items] ->", [len(x) for x in items])
print("[x[2:] for x in items] ->", [x[2:]
for x in items])
print("[x[2:] for x in items if len(x) > 2] ->", [x[2:]
for x in items if len(x) > 2])
numbers = [0 for x in range(8)]
print("[0 for x in range(8)]", numbers)
numbers = []
for x in range(8):
numbers.append(0)
print("avec un for", numbers)
print("[x for x in range(4)] ->", [x for x in range(4)])
print("[x * 2 for x in range(4)] ->", [x * 2 for x in range(4)])
print("[x for x in range(4) if x % 2 == 0] ->",
[x for x in range(4) if x % 2 == 0])
print("[x + 2 for x in range(4) if x % 2 == 0] ->",
[x + 2 for x in range(4) if x % 2 == 0])
items = ["I", "love", "python"]
print(items)
print("[len(x) for x in items] ->", [len(x) for x in items])
print("[x[2:] for x in items] ->", [x[2:]
for x in items])
print("[x[2:] for x in items if len(x) > 2] ->", [x[2:]
for x in items if len(x) > 2])
[0 for x in range(8)] [0, 0, 0, 0, 0, 0, 0, 0] avec un for [0, 0, 0, 0, 0, 0, 0, 0] [x for x in range(4)] -> [0, 1, 2, 3] [x * 2 for x in range(4)] -> [0, 2, 4, 6] [x for x in range(4) if x % 2 == 0] -> [0, 2] [x + 2 for x in range(4) if x % 2 == 0] -> [2, 4] ['I', 'love', 'python'] [len(x) for x in items] -> [1, 4, 6] [x[2:] for x in items] -> ['', 've', 'thon'] [x[2:] for x in items if len(x) > 2] -> ['ve', 'thon']
Listes à deux dimensions¶
- Elles sont vues comme des listes dont chaque élément est une autre list
- Il n'est pas nécessaire que les sous-listes aisent le même nombre d'éléments
In [2]:
Copied!
t = [[11, 12, 5, 2], [15, 6]]
print("t ->", t, "- t[0] ->", t[0], "- t[0][1] ->", t[0][1])
for ligne in t:
print("ligne:", ligne)
print("len(t):", len(t))
for i in range(len(t)):
print("i ->", i, "- t[i] ->", t[i])
t = [[11, 12, 5, 2], [15, 6]]
print("t ->", t, "- t[0] ->", t[0], "- t[0][1] ->", t[0][1])
for ligne in t:
print("ligne:", ligne)
print("len(t):", len(t))
for i in range(len(t)):
print("i ->", i, "- t[i] ->", t[i])
t -> [[11, 12, 5, 2], [15, 6]] - t[0] -> [11, 12, 5, 2] - t[0][1] -> 12 ligne: [11, 12, 5, 2] ligne: [15, 6] len(t): 2 i -> 0 - t[i] -> [11, 12, 5, 2] i -> 1 - t[i] -> [15, 6]
- Si toutes les sous-listes ont le même nombre d'éléments, on aura alors une matrice
- Le nombre de lignes: est le nombre d'éléments de la liste mère
- Le nombre de colonnes: est le nombre d'éléments des sous-listes
In [3]:
Copied!
m = [[11, 12, 5], [6, -5, 22]]
print(m)
print("Nombre de ligne de la matrices ->", len(m))
print("Nombre de colonnes de la matrices ->", len(m[0]))
l, c = len(m), len(m[0])
print("La matrice a", l, "ligne et", c, "colonnes")
# Installer avec un: pip install pandas
import pandas as pd
pd.DataFrame(m)
m = [[11, 12, 5], [6, -5, 22]]
print(m)
print("Nombre de ligne de la matrices ->", len(m))
print("Nombre de colonnes de la matrices ->", len(m[0]))
l, c = len(m), len(m[0])
print("La matrice a", l, "ligne et", c, "colonnes")
# Installer avec un: pip install pandas
import pandas as pd
pd.DataFrame(m)
[[11, 12, 5], [6, -5, 22]] Nombre de ligne de la matrices -> 2 Nombre de colonnes de la matrices -> 3 La matrice a 2 ligne et 3 colonnes
Out[3]:
0 | 1 | 2 | |
---|---|---|---|
0 | 11 | 12 | 5 |
1 | 6 | -5 | 22 |
- On peut parcourir un tableau à deux dimensions avec deux boucles for imbriquées
In [4]:
Copied!
for ligne in m:
print("ligne courante", ligne)
for j in ligne:
print("element", j)
for ligne in m:
print("ligne courante", ligne)
for j in ligne:
print("element", j)
ligne courante [11, 12, 5] element 11 element 12 element 5 ligne courante [6, -5, 22] element 6 element -5 element 22
In [5]:
Copied!
for i in range(len(m)):
print("i:", i, "- t[i]:", m[i])
for j in range(len(m[i])):
print("i ->", i, "- j ->", j, "- t[i][j] ->", m[i][j])
for i in range(len(m)):
print("i:", i, "- t[i]:", m[i])
for j in range(len(m[i])):
print("i ->", i, "- j ->", j, "- t[i][j] ->", m[i][j])
i: 0 - t[i]: [11, 12, 5] i -> 0 - j -> 0 - t[i][j] -> 11 i -> 0 - j -> 1 - t[i][j] -> 12 i -> 0 - j -> 2 - t[i][j] -> 5 i: 1 - t[i]: [6, -5, 22] i -> 1 - j -> 0 - t[i][j] -> 6 i -> 1 - j -> 1 - t[i][j] -> -5 i -> 1 - j -> 2 - t[i][j] -> 22
Génération d'une matrice (liste à deux dimensions)¶
- Nous savons que la compéhension de liste permet de générer une liste à partir d'un itérateur:
- [ 'valeur de l'élélement' for 'varialbe de parcrous' in itérateur if condition ]
- Que se passerait-t-il si on mettait dans 'valeur de l'élélemnt' une liste ?
- Que se passerait-t-il si on mettait dans 'valeur de l'élélemnt' une compréhension de liste ?
In [6]:
Copied!
import pandas as pd
l = [[0, 1, 2] for x in range(4)]
pd.DataFrame(l)
import pandas as pd
l = [[0, 1, 2] for x in range(4)]
pd.DataFrame(l)
Out[6]:
0 | 1 | 2 | |
---|---|---|---|
0 | 0 | 1 | 2 |
1 | 0 | 1 | 2 |
2 | 0 | 1 | 2 |
3 | 0 | 1 | 2 |
In [7]:
Copied!
pd.DataFrame([[x + 1, 0, x * 2, x ** 2] for x in range(2)])
pd.DataFrame([[x + 1, 0, x * 2, x ** 2] for x in range(2)])
Out[7]:
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | 1 | 0 | 0 | 0 |
1 | 2 | 0 | 2 | 1 |
In [8]:
Copied!
l = [[0 for y in range(10)] for x in range(2)]
pd.DataFrame(l)
l = [[0 for y in range(10)] for x in range(2)]
pd.DataFrame(l)
Out[8]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
In [9]:
Copied!
pd.DataFrame([[y for y in range(10)] for x in range(2)])
pd.DataFrame([[y for y in range(10)] for x in range(2)])
Out[9]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
In [10]:
Copied!
pd.DataFrame([[x * 2 + y for y in range(10)] for x in range(3)])
pd.DataFrame([[x * 2 + y for y in range(10)] for x in range(3)])
Out[10]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |