it-swarm.com.de

Hängen Sie in Python eine Ganzzahl an den Anfang der Liste an

Ich habe eine ganze Zahl und eine Liste. Ich möchte eine neue Liste erstellen, die mit der Variablen beginnt und mit der Liste endet. __ Schreiben von a + list Ich erhalte Fehler. Der Compiler behandelt a als Ganzzahl, daher kann ich weder anhängen noch erweitern. Wie würdest du das machen?

314
gen
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]
446
Rohit Jain
>>>var=7
>>>array = [1,2,3,4,5,6]
>>>array.insert(0,var)
>>>array
[7, 1, 2, 3, 4, 5, 6]

Wie es funktioniert:

array.insert(index, value)

Fügen Sie ein Objekt an einer bestimmten Position ein. Das erste Argument ist der Index des Elements, vor dem eingefügt werden soll. Daher wird array.insert(0, x) am Anfang der Liste eingefügt, und array.insert(len(array), x) entspricht array.append(x). Negative Werte werden als relativ zum Ende des Arrays behandelt.

591
Nullify

Wenn Sie versuchen, diese Operation häufig auszuführen, insbesondere in Schleifen, ist a list die falsche Datenstruktur

Listen sind nicht für Änderungen an der Vorderseite optimiert, und somelist.insert(0, something) ist eine O(n) - Operation .

somelist.pop(0) und del somelist[0] sind auch O(n) - Operationen.

Die richtige zu verwendende Datenstruktur ist eine deque aus dem collections-Modul. deques stellt eine Schnittstelle bereit, die der von Listen ähnelt, jedoch für Änderungen von beiden Endpunkten optimiert ist. Sie haben eine appendleft-Methode für Einfügungen an der Vorderseite.

Demo:

In [1]: lst = [0]*1000
In [2]: timeit -n1000 lst.insert(0, 1)
1000 loops, best of 3: 794 ns per loop
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 per loop
70
timgeb

Eine andere Möglichkeit, das Gleiche zu tun, 

list[0:0] = [a]
34
v2b

Nichts davon hat für mich gearbeitet. Ich habe das erste Element als Teil einer Serie (eine einzelne Elementserie) konvertiert, das zweite Element ebenfalls als Serie und die Anfügefunktion.

l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()
1
aparna ramesh

Basierend auf einigen (minimalen) Benchmarks, die das Modul timeit verwenden, scheint das Folgende eine ähnliche, wenn nicht bessere Leistung zu haben als die akzeptierte Antwort

new_lst = [a, *lst]

Wie bei [a] + list wird hierdurch eine neue Liste erstellt und keine lst mutiert.

Wenn Sie beabsichtigen, die Liste zu ändern, verwenden Sie lst.insert(0, a).

1
Dovi Salomon

Sie können die Entpackungsliste verwenden:

a = 5

li = [1,2,3]

li = [a, * li]

=> [5, 1, 2, 3]

0
HoangYell
list_1.insert(0,ur_data)

stellen Sie sicher, dass ur_data vom Typ string ist. Wenn Sie also data= int(5) haben, konvertieren Sie es in ur_data = str(data).

0
sahil panindre

Neue Listen können durch einfaches Hinzufügen von Listen erstellt werden.

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
0
Erico9001