Veuillez considérer le code suivant:
i = [1, 2, 3, 5, 8, 13]
j = []
k = 0
for l in i:
j[k] = l
k += 1
print j
La sortie (Python 2.6.6 sur Win 7 32 bits) est la suivante:
> Traceback (most recent call last):
> j[k] = l IndexError: list assignment index out of range
Je suppose que c'est quelque chose de simple que je ne comprends pas. Quelqu'un peut-il éclaircir?
j
est une liste vide, mais vous essayez d'écrire dans l'élément [0]
lors de la première itération, qui n'existe pas encore.
Essayez plutôt ce qui suit pour ajouter un nouvel élément à la fin de la liste:
for l in i:
j.append(l)
Votre autre option est d’initialiser j
:
j = [None]*max(i)
Faites j.append(l)
au lieu de j[k] = l
et évitez k
du tout.
Vous pouvez également utiliser une compréhension de liste:
j = [l for l in i]
ou en faire une copie en utilisant la déclaration:
j = i[:]
j.append(l)
Évitez également d'utiliser des "L" minuscules, car il est facile pour eux de les confondre
Je pense que la méthode Python insert est ce que vous recherchez:
Insère l'élément x à la position i.
array = [1,2,3,4,5]
array.insert(1,2)
print(array)
# prints [1,2,2,3,4,5]
Vous pouvez utiliser un dictionnaire (similaire à un tableau associatif) pour j
i = [1, 2, 3, 5, 8, 13]
j = {} #initiate as dictionary
k = 0
for l in i:
j[k] = l
k += 1
print j
imprimera:
{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}
Une autre façon:
j=i[0]
for k in range(1,len(i)):
j = numpy.vstack([j,i[k]])
Dans ce cas, j
sera un tableau numpy
Peut-être avez-vous besoin de extend ()
i=[1,3,5,7]
j=[]
j.extend(i)
En python avec tableau, vous pouvez uniquement ajouter et ajouter un élément au tableau.
Puisque vous avez assigné j comme liste vide et que vous essayez dans la boucle de trouver la 0ème valeur d’index de j qui ne fonctionnera sûrement pas. Essayez j.append (l) Cela fonctionnera.