792 Stimmen

Füge Ganzzahl am Anfang der Liste in Python hinzu

Wie füge ich eine Ganzzahl am Anfang einer Liste ein?

[1, 2, 3]    [42, 1, 2, 3]

1281voto

Nullify Punkte 20595
>>> 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.

607voto

Rohit Jain Punkte 207783
>>> x = 42
>>> xs = [1, 2, 3]
>>> [x] + xs
[42, 1, 2, 3]

Hinweis: Verwenden Sie nicht list als Variablennamen.

134voto

timgeb Punkte 72448

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

55voto

v2b Punkte 1436

Ein weiterer Weg, das Gleiche zu tun,

liste[0:0] = [a]

25voto

HoangYell Punkte 2873

Sie können die Unpack-Liste verwenden:

a = 5

li = [1,2,3]

li = [a, *li]

\=> [5, 1, 2, 3]

CodeJaeger.com

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.

Powered by:

X