Créer une liste de N listes en Python

Créer une liste de N listes en Python #

Pour créer une liste de N listes :

  1. Utilisez une compréhension de liste pour itérer sur une gamme d’objets de longueur N.
  2. A chaque itération, retournez une liste.
  3. 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 numpyvous 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 :

  1. Déclarer une variable qui stocke une liste vide.
  2. Utilisez un for pour itérer sur une range de longueur N.
  3. 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.

Laisser un commentaire