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?
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li # Don't use 'list' as variable name.
[5, 1, 2, 3]
>>>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.
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
Eine andere Möglichkeit, das Gleiche zu tun,
list[0:0] = [a]
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()
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)
.
Sie können die Entpackungsliste verwenden:
a = 5
li = [1,2,3]
li = [a, * li]
=> [5, 1, 2, 3]
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)
.
Neue Listen können durch einfaches Hinzufügen von Listen erstellt werden.
list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)