Skip to content

Initialiser une liste avec une taille et des valeurs données en Python

Cet article décrit comment initialiser une liste avec n’importe quelle taille (nombre d’éléments) et valeurs en Python.

  • Créer une liste vide
  • Initialiser une liste avec n’importe quelle taille et valeurs
  • Remarques sur l’initialisation d’une liste 2D (liste de listes)
  • Pour les tuples et les tableaux

Consultez l’article suivant sur l’initialisation du tableau NumPy ndarray.

Créer une liste vide

Une liste vide est créée comme suit. Vous pouvez obtenir le nombre d’éléments d’une liste avec la fonction intégrée len().

l_empty = []
print(l_empty)
# []

print(len(l_empty))
# 0

Vous pouvez ajouter un élément avec append() ou le supprimer avec remove().

l_empty.append(100)
l_empty.append(200)
print(l_empty)
# [100, 200]

l_empty.remove(100)
print(l_empty)
# [200]

Consultez les articles suivants pour plus de détails sur l’ajout et la suppression d’éléments dans les listes,

Initialiser une liste avec n’importe quelle taille et valeurs

Comme mentionné ci-dessus, en Python, vous pouvez facilement ajouter et supprimer des éléments d’une liste, donc dans la plupart des cas, il n’est pas nécessaire d’initialiser la liste à l’avance.

Si vous souhaitez initialiser une liste d’un nombre quelconque d’éléments où tous les éléments sont remplis avec n’importe quelle valeur, vous pouvez utiliser l’opérateur * comme suit.

l = [0] * 10
print(l)
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

print(len(l))
# 10

Une liste est générée qui répète les éléments de la liste d’origine.

print([0, 1, 2] * 3)
# [0, 1, 2, 0, 1, 2, 0, 1, 2]

Vous pouvez générer une liste de nombres séquentiels avec range().

Remarques sur l’initialisation d’une liste 2D (liste de listes)

Soyez prudent lorsque vous initialisez une liste de listes.

Le code suivant n’est pas bon.

l_2d_ng = [[0] * 4] * 3
print(l_2d_ng)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

Si vous mettez à jour une liste, toutes les listes seront modifiées.

l_2d_ng[0][0] = 5
print(l_2d_ng)
# [[5, 0, 0, 0], [5, 0, 0, 0], [5, 0, 0, 0]]

l_2d_ng[0].append(100)
print(l_2d_ng)
# [[5, 0, 0, 0, 100], [5, 0, 0, 0, 100], [5, 0, 0, 0, 100]]

C’est parce que les listes internes sont toutes le même objet.

print(id(l_2d_ng[0]) == id(l_2d_ng[1]) == id(l_2d_ng[2]))
# True

Vous pouvez écrire comme suit en utilisant des compréhensions de liste.

l_2d_ok = [[0] * 4 for i in range(3)]
print(l_2d_ok)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

Chaque liste interne est traitée comme un objet différent.

l_2d_ok[0][0] = 100
print(l_2d_ok)
# [[100, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

print(id(l_2d_ok[0]) == id(l_2d_ok[1]) == id(l_2d_ok[2]))
# False

Bien que range() soit utilisé dans l’exemple ci-dessus, tout itérable de la taille souhaitée est acceptable.

l_2d_ok_2 = [[0] * 4 for i in [1] * 3]
print(l_2d_ok_2)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

l_2d_ok_2[0][0] = 100
print(l_2d_ok_2)
# [[100, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

print(id(l_2d_ok_2[0]) == id(l_2d_ok_2[1]) == id(l_2d_ok_2[2]))
# False

Si vous souhaitez générer une liste multidimensionnelle, vous pouvez imbriquer les compréhensions de liste.

l_3d = [[[0] * 2 for i in range(3)] for j in range(4)]
print(l_3d)
# [[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]

l_3d[0][0][0] = 100
print(l_3d)
# [[[100, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]

Pour les tuples et les tableaux

Vous pouvez initialiser des tuples ainsi que des listes.

Notez qu’un tuple avec un élément nécessite ,.

t = (0,) * 5
print(t)
# (0, 0, 0, 0, 0)

Pour le type tableau, vous pouvez passer la liste initialisée au constructeur.

import array

a = array.array('i', [0] * 5)
print(a)
# array('i', [0, 0, 0, 0, 0])