Voeg integer toe aan het begin van de lijst in Python

Ik heb een integer en een lijst. Ik wil graag een nieuwe lijst maken met de variabele en eindigend met de lijst.
Writing a + listIk krijg fouten. De compiler behandelt aals 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 dequeVanaf de collectionsModule. Deques ontmaskeren een interface die vergelijkbaar is met die van lijsten, maar zijn geoptimaliseerd voor modificaties van beide eindpunten. Ze hebben een appendleftmethode 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 timeitMODULE, lijkt het erop dat het volgende vergelijkbaar is, indien niet betere prestaties dan het geaccepteerde antwoord

new_lst = [a, *lst]

Zoals met [a] + listHiermee 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.dequeis sneller dan Python pure listin 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)

Other episodes