J'essaie de append
à un tableau multi-dimensionnel.
Voici ce que j'ai fait jusqu'à présent:
arr=[[]]
for i in range(10):
for j in range(5):
arr[i].append(i*j)
print i,i*j
print arr
Ceci est ma sortie attendue:
[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8],[0,3,6,9,12],[0,4,8,12,16],[0,5,10,15,20],[0,6,12,18,24],[0,7,14,21,28],[0,8,16,24,32],[0,9,18,27,36]]
Cependant, j'obtiens cette erreur:
IndexError
: index de liste hors limites
Vous oubliez d'ajouter la liste vide à l'avance. Donc pourquoi vous obtenez un, IndexError
lorsque vous essayez de faire arr[i]
.
arr = []
for i in range(10):
arr.append([])
for j in range(5):
arr[i].append(i*j)
Vous devez définir votre tableau initial de la manière suivante: arr=[[] for i in range(10)]
, car vous ne pouvez pas ajouter de valeur à un tableau inexistant (c'est ce qui se passe quand i>=1
). Donc, le code devrait ressembler à:
arr=[[] for i in range(10)]
for i in range(10):
for j in range(5):
arr[i].append(i*j)
print(i,i*j)
print(arr)
Comme d'autres l'ont souligné , vous devez vous assurer que votre liste de listes contient initialement dix listes vides (au lieu d'une seule) afin que les éléments successifs soient correctement nommés append
.
Cependant, je pourrais suggérer d'utiliser plutôt une compréhension de liste imbriquée, ce qui évite entièrement le problème en créant la liste en une seule déclaration:
arr = [[i*j for j in range(5)] for i in range(10)]
Vous commencez votre arr
en tant que array
avec un seul élément. Vous avez donc une telle erreur lorsque i
devient supérieur à 0
. Vous pouvez utiliser list comprehensive
pour archiver votre objectif:
[[i * j for j in range(5)] for i in range(10)]