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, das ich nicht verstehe. Kann jemand es klären?
append
ist die richtige Lösung für Ihren Anwendungsfall, es gibt jedoch eine Einfügemethode für die Python-Liste, die direkt an die i-te Position in der Liste eingefügt werden kann.j.insert(k, l)
Antworten:
j
ist eine leere Liste, aber Sie versuchen,[0]
in der ersten Iteration, die noch nicht vorhanden ist , in ein Element zu schreiben .Versuchen Sie stattdessen Folgendes, um am Ende der Liste ein neues Element hinzuzufügen:
Natürlich würden Sie dies in der Praxis niemals tun, wenn Sie nur eine vorhandene Liste kopieren möchten. Sie würden einfach tun:
Wenn Sie die Python-Liste wie ein Array in anderen Sprachen verwenden möchten, können Sie alternativ eine Liste vorab erstellen, deren Elemente auf einen Nullwert gesetzt sind (
None
im folgenden Beispiel), und später die Werte an bestimmten Positionen überschreiben:Zu beachten ist, dass Sie mit einem
list
Objekt einem nicht vorhandenen Index keinen Wert zuweisen können.quelle
Sie können auch Folgendes initialisieren
j
:quelle
Tun Sie
j.append(l)
stattj[k] = l
und vermeiden Siek
überhaupt.quelle
j+=[l]
.append
weitaus häufiger vorkommt (vielleicht aus einem Grund - ich denke, es ist etwas einfacher zu verstehen), nicht wirklich überlegen in irgendeiner Weise. (Edit @khachik: Nein,+=
ändert an Ort und Stelle)Sie können auch ein Listenverständnis verwenden:
oder machen Sie eine Kopie davon mit der Anweisung:
quelle
Vermeiden Sie auch die Verwendung von "L" in Kleinbuchstaben, da diese leicht mit 1 verwechselt werden können
quelle
Ich denke, die Python-Methodeneinfügung ist genau das, wonach Sie suchen:
Fügt Element x an Position i ein. list.insert (i, x)
quelle
insert
wannappend
speziell für diesen Zweck bereitgestellt wurde.[1, 20, 2, 3, 4, 5]
.Sie können ein Wörterbuch (ähnlich einem assoziativen Array) für j verwenden
wird drucken:
quelle
Noch ein Weg:
In diesem Fall handelt
j
es sich um ein Numpy-Arrayquelle
Vielleicht brauchen Sie verlängern ()
quelle