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?
5 réponses
>>> 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]
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.
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 listesNe 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
Les nouvelles listes peuvent être créées en ajoutant simplement des listes ensemble.
list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)