Ik heb een integer en een lijst. Ik wil graag een nieuwe lijst maken met de variabele en eindigend met de lijst.
Writing a + list
Ik krijg fouten. De compiler behandelt a
als geheel getal, dus ik kan bijvoegsel niet gebruiken of uitstrekken.
Hoe zou je dit doen?
Antwoord 1, Autoriteit 100%
>>>var=7
>>>array = [1,2,3,4,5,6]
>>>array.insert(0,var)
>>>array
[7, 1, 2, 3, 4, 5, 6]
Hoe het werkt:
array.insert(index, value)
Steek een item op een gegeven positie. Het eerste argument is de index van het element voordat u wilt invoegen, dus array.insert(0, x)
inzetstukken aan de voorkant van de lijst, en array.insert(len(array), x)
is gelijk aan array.append(x)
. Negatieve waarden worden behandeld als ten opzichte van het einde van de array.
Antwoord 2, Autoriteit 57%
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li # Don't use 'list' as variable name.
[5, 1, 2, 3]
Antwoord 3, Autoriteit 12%
Merk op dat als u die operatie probeert te doen, vooral in lussen, een lijst is de verkeerde gegevensstructuur .
Lijsten zijn niet geoptimaliseerd voor wijzigingen aan de voorkant en somelist.insert(0, something)
is een O (n) werking .
somelist.pop(0)
en del somelist[0]
zijn ook O (n) -activiteiten.
De juiste gegevensstructuur die moet worden gebruikt, is een deque
Vanaf de collections
Module. Deques ontmaskeren een interface die vergelijkbaar is met die van lijsten, maar zijn geoptimaliseerd voor modificaties van beide eindpunten. Ze hebben een appendleft
methode voor inserties aan de voorkant.
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
Antwoord 4, Autoriteit 5%
een andere manier om hetzelfde te doen,
list[0:0] = [a]
Antwoord 5, Autoriteit 2%
U kunt PARTACK-lijst gebruiken:
A = 5
LI = [1,2,3]
LI = [A, * LI]
= & gt; [5, 1, 2, 3]
Antwoord 6
Gebaseerd op sommige (minimale) benchmarks met behulp van de timeit
MODULE, lijkt het erop dat het volgende vergelijkbaar is, indien niet betere prestaties dan het geaccepteerde antwoord
new_lst = [a, *lst]
Zoals met [a] + list
Hiermee wordt een nieuwe lijst gemaakt en muteert u niet lst
.
Als uw voornemen is om de lijst te muteren, gebruikt u dan lst.insert(0, a)
.
Antwoord 7
alternatief:
>>> from collections import deque
>>> my_list = deque()
>>> my_list.append(1) # append right
>>> my_list.append(2) # append right
>>> my_list.append(3) # append right
>>> my_list.appendleft(100) # append left
>>> my_list
deque([100, 1, 2, 3])
>>> my_list[0]
100
[OPMERKING]:
collections.deque
is sneller dan Python pure list
in een lus Relevant bericht.
Antwoord 8
Nieuwe lijsten kunnen worden gemaakt door eenvoudig lijsten aan elkaar toe te voegen.
list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
Antwoord 9
Geen van deze werkte voor mij. Ik heb het eerste element geconverteerd om deel uit te maken van een reeks (een reeks met één element), en het tweede element ook om te zetten in een reeks, en de append-functie gebruikt.
l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()
Antwoord 10
list_1.insert(0,ur_data)
zorg ervoor dat ur_data van het tekenreekstype is
dus als je data= int(5)
hebt, converteer het dan naar ur_data = str(data)