web-dev-qa-db-fra.com

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 commençant par la variable et se terminant par la liste . Écrire a + list Je reçois des erreurs. Le compilateur traite a comme un entier, donc je ne peux pas utiliser add, ni prolonger l'un ou l'autre. Comment ferais-tu ceci?

314
gen
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]
446
Rohit Jain
>>>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 lequel insérer, donc array.insert(0, x) insère au début de la liste, et array.insert(len(array), x) est équivalent à array.append(x). Les valeurs négatives sont traitées comme relatives à la fin du tableau.

591
Nullify

Notez que si vous essayez souvent de faire cette opération, en particulier dans les boucles, a list est une structure de données incorrecte

Les listes ne sont pas optimisées pour les modifications apportées à 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 une variable deque du module collections. deques expose une interface similaire à celle des listes, mais optimisée pour les modifications des deux extrémités. 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
70
timgeb

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

list[0:0] = [a]
34
v2b

Aucun de ceux-ci n'a fonctionné pour moi. J'ai converti le premier élément pour faire partie d'une série (une seule série d'éléments) et ai également converti le deuxième élément en série.

l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()
1
aparna ramesh

D'après certains points de repère (minimaux) utilisant le module timeit, il semble que les performances suivantes présentent des performances similaires, voire meilleures, à celles de la réponse acceptée.

new_lst = [a, *lst]

Comme avec [a] + list, cela créera une nouvelle liste et non une mutation lst.

Si votre intention est de modifier la liste, utilisez lst.insert(0, a).

1
Dovi Salomon

Vous pouvez utiliser la liste de décompression:

a = 5

li = [1,2,3]

li = [a, * li]

=> [5, 1, 2, 3]

0
HoangYell
list_1.insert(0,ur_data)

assurez-vous que urdata est de type chaîne donc si vous avez data= int(5) le convertir en ur_data = str(data)

0
sahil panindre

De nouvelles listes peuvent être faites en ajoutant simplement des listes ensemble.

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
0
Erico9001