Wie füge ich eine Ganzzahl am Anfang einer Liste ein?
[1, 2, 3] [42, 1, 2, 3]
Wie füge ich eine Ganzzahl am Anfang einer Liste ein?
[1, 2, 3] [42, 1, 2, 3]
>>> x = 42
>>> xs = [1, 2, 3]
>>> xs.insert(0, x)
>>> xs
[42, 1, 2, 3]
Wie es funktioniert:
list.insert(index, value)
Fügt einen Eintrag an einer bestimmten Position ein. Das erste Argument ist der Index des Elements, vor dem eingefügt werden soll, also xs.insert(0, x)
fügt am Anfang der Liste ein, und xs.insert(len(xs), x)
ist äquivalent zu xs.append(x)
. Negative Werte werden als relativ zum Ende der Liste behandelt.
Beachten Sie, dass, wenn Sie diese Operation oft durchführen, insbesondere in Schleifen, eine Liste die falsche Datenstruktur ist.
Listen sind nicht für Modifikationen am Anfang optimiert, und somelist.insert(0, etwas)
ist eine O(n) Operation.
somelist.pop(0)
und del somelist[0]
sind ebenfalls O(n) Operationen.
Die korrekte Datenstruktur zum Verwenden ist ein deque
aus dem collections
Modul. Deques bieten eine ähnliche Schnittstelle wie Listen, sind aber für Modifikationen von beiden Enden optimiert. Sie haben eine appendleft
Methode für Einfügungen am Anfang.
Demo:
In [1]: lst = [0]*1000
In [2]: timeit -n1000 lst.insert(0, 1)
1000 Loops, best of 3: 794 ns pro Schleife
In [3]: from collections import deque
In [4]: deq = deque([0]*1000)
In [5]: timeit -n1000 deq.appendleft(1)
1000 Loops, best of 3: 73 ns pro Schleife
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.