Créer une liste de N listes en Python #
Pour créer une liste de N listes :
- Utilisez une compréhension de liste pour itérer sur une gamme d’objets de longueur N.
- A chaque itération, retournez une liste.
- La nouvelle liste contiendra N listes.
list_of_lists = [[] for _ in range(3)]
print(list_of_lists)
Nous avons utilisé une compréhension de liste pour itérer sur un objet range avec N éléments.
Les compréhensions de liste sont utilisées pour effectuer une opération pour chaque élément ou pour sélectionner un sous-ensemble d’éléments qui remplissent une condition.
A chaque itération, nous retournons une liste vide.
Nous avons utilisé un trait de soulignement _
pour le nom de la variable. Il existe une convention selon laquelle
d’utiliser un trait de soulignement comme nom des variables fictives que l’on n’a pas l’intention d’utiliser.
La classe range est
couramment utilisée pour boucler un nombre spécifique de fois.
print(list(range(3)))
print(list(range(1, 4)))
La compréhension de liste retourne une nouvelle liste qui contient N sous-listes.
list_of_lists = [[] for _ in range(3)]
print(list_of_lists)
Si vous utilisez numpy
vous pouvez également utiliser l’option numpy.empty()
méthode.
import numpy as np
list_of_lists = np.empty((3, 0)).tolist()
print(list_of_lists)
Le site
numpy.empty
renvoie un nouveau tableau de la forme donnée.
Nous avons utilisé la méthode
tolist
pour convertir le tableau en une liste de listes.
Il est très important de ne pas utiliser l’opérateur de multiplication *
car les
sous-listes représenteraient le même objet.
list_of_lists = [[]] * 3
print(list_of_lists)
list_of_lists[0].append('abc')
print(list_of_lists)
Lorsque la multiplication (*) est utilisé avec une liste et un entier, il répète les éléments de la liste N fois.
répète N fois les éléments de la liste.
Cependant, les 3 sous-listes représentent le même objet.
Elles sont toutes stockées au même endroit dans la mémoire, donc lorsque nous ajoutons une valeur à une liste, le changement se reflète également dans les autres listes.
Comme alternative à la méthode range()
vous pouvez utiliser une classe for
boucle.
Créer une liste de N listes en utilisant une boucle for #
Pour créer une liste de N listes :
- Déclarer une variable qui stocke une liste vide.
- Utilisez un
for
pour itérer sur unerange
de longueur N. - Utilisez le
list.append()
pour ajouter N nouvelles listes à la liste existante.
list_of_lists = []
for _ in range(3):
list_of_lists.append([])
print(list_of_lists)
Nous avons utilisé un for
pour itérer sur une range
objet.
A chaque itération, nous utilisons le list.append()
pour ajouter une nouvelle liste à la
liste existante.
L’adresse
liste.append()
ajoute un élément à la fin de la liste.
Si vous devez optimiser les performances, vous pouvez également utiliser la méthode
itertools.repeat()
méthode.
from itertools import repeat
list_of_lists = [
[] for _ in repeat(None, 3)
]
print(list_of_lists)
L’exemple de code est très similaire à celui qui utilisait la méthode range()
.
Cependant, la classe
itertools.repeat
est un peu plus rapide car elle n’a pas besoin de créer de nouveaux objets entiers.
Le site itertools.repeat
prend comme arguments un objet et le nombre de fois que l’objet
doit être répété comme arguments.
from itertools import repeat
print(list(repeat('x', 5)))
La méthode retourne un itérateur contenant l’objet répété N fois.