Ajouter un entier au début de la liste en Python

J'ai un entier et une liste. Je voudrais en faire une nouvelle liste en commençant par la variable et en terminant par la liste. Écrire a + list Je reçois des erreurs. Le compilateur gère a Comme entier, donc je ne peux pas utiliser append ou extend non plus. Comment voulez-vous faire cela?

277
demandé sur joachim 2013-07-28 21:54:33

5 réponses

>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]
383
répondu Rohit Jain 2013-07-28 17:55:11
>>>var=7
>>>array = [1,2,3,4,5,6]
>>>array.insert(0,var)
>>>array
[7, 1, 2, 3, 4, 5, 6]

Comment ça marche:

array.insert(index, value)

Insérer un élément à une position donnée. Le premier argument est l'indice de l'élément avant d'insertion, donc array.insert(0, x) insère sur la face de la liste, et array.insert(len(array), x) est équivalent à array.append(x).Les valeurs négatives sont traitées comme étant relatives à la fin du tableau.

411
répondu Nullify 2016-10-25 09:54:53

Notez que si vous essayez de faire de cette opération souvent, surtout dans les boucles, une liste est la mauvaise structure de données.

Les listes

Ne sont pas optimisées pour les modifications à l'avant, et somelist.insert(0, something)est une opération O(N) .

somelist.pop(0) et del somelist[0] sont également des opérations O (n).

La structure de données correcte à utiliser est deque du module collections. deques expose une interface similaire à celles des listes, mais optimisée pour les modifications des deux terminaison. Ils ont une méthode appendleft pour les insertions à l'avant.

Démo:

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
62
répondu timgeb 2016-04-10 12:44:28

Une autre façon de faire la même chose,

list[0:0] = [a]
34
répondu v2b 2013-07-28 18:38:16

Les nouvelles listes peuvent être créées en ajoutant simplement des listes ensemble.

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
-1
répondu Erico9001 2018-03-26 14:15:01