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?
>>> 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 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.
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
Une autre façon de faire la même chose,
list[0:0] = [a]
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()
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)
.
Vous pouvez utiliser la liste de décompression:
a = 5
li = [1,2,3]
li = [a, * li]
=> [5, 1, 2, 3]
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)
De nouvelles listes peuvent être faites en ajoutant simplement des listes ensemble.
list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)