Bitte beachten Sie den folgenden Code:
i = [1, 2, 3, 5, 8, 13]
j = []
k = 0
for l in i:
j[k] = l
k += 1
print j
Die Ausgabe (Python 2.6.6 unter Win 7 32-Bit) lautet:
> Traceback (most recent call last):
> j[k] = l IndexError: list assignment index out of range
Ich denke, es ist etwas einfaches, was ich nicht verstehe. Kann jemand es aufklären?
j
ist eine leere Liste, aber Sie versuchen in der ersten Iteration, die noch nicht existiert, in das Element [0]
zu schreiben.
Versuchen Sie stattdessen Folgendes, um ein neues Element am Ende der Liste hinzuzufügen:
for l in i:
j.append(l)
Ihre andere Option ist, j
zu initialisieren:
j = [None]*max(i)
Machen Sie j.append(l)
anstelle von j[k] = l
und vermeiden Sie k
.
Sie können auch ein Listenverständnis verwenden:
j = [l for l in i]
oder machen Sie eine Kopie davon mit der Anweisung:
j = i[:]
j.append(l)
Vermeiden Sie auch die Verwendung von "L" in Kleinbuchstaben, da diese leicht mit 1 zu verwechseln sind
Ich denke, die Python-Methode insert ist was Sie suchen:
Fügt Element x an Position i ein.
array = [1,2,3,4,5]
array.insert(1,2)
print(array)
# prints [1,2,2,3,4,5]
Sie könnten ein Wörterbuch (ähnlich einem assoziativen Array) für j verwenden
i = [1, 2, 3, 5, 8, 13]
j = {} #initiate as dictionary
k = 0
for l in i:
j[k] = l
k += 1
print j
wird drucken:
{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}
Ein weiterer Weg:
j=i[0]
for k in range(1,len(i)):
j = numpy.vstack([j,i[k]])
In diesem Fall ist j
ein numpy-Array
Vielleicht brauchst du extend ()
i=[1,3,5,7]
j=[]
j.extend(i)
In Python mit Array können Sie nur ein Element anfügen und in das Array einfügen
Da Sie j als leere Liste zugewiesen haben und in der Schleife versuchen, den 0. Indexwert von j zu finden, der mit Sicherheit nicht funktioniert. Versuchen Sie es mit j.append (l) Dies wird funktionieren.