Añadir entero al principio de la lista en Python


Tengo un entero y una lista. Me gustaría hacer una nueva lista de ellos comenzando con la variable y terminando con la lista. Escribiendo a + list Recibo errores. El compilador maneja a como entero, por lo tanto no puedo usar anexar ni extender. ¿Cómo harías esto?

Author: joachim, 2013-07-28

5 answers

>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]
 383
Author: Rohit Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
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]

Cómo funciona:

array.insert(index, value)

Inserte un elemento en una posición dada. El primer argumento es el índice del elemento antes del cual insertar, por lo que array.insert(0, x) se inserta en el frente de la lista, y array.insert(len(array), x) es equivalente a array.append(x).Los valores negativos se tratan como relativos al final de la matriz.

 411
Author: Nullify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-25 09:54:53

Tenga en cuenta que si está tratando de hacer esa operación a menudo, especialmente en bucles, una lista es la estructura de datos incorrecta.

Las listas no están optimizadas para modificaciones en el frente, y somelist.insert(0, something) es una operación O(n) .

somelist.pop(0) y del somelist[0] son también operaciones O (n).

La estructura de datos correcta a utilizar es una deque desde el módulo collections. deques exponen una interfaz que es similar a las de las listas, pero están optimizadas para modificaciones de ambos puntos finales. Tienen un método appendleft para inserciones en la parte delantera.

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
 62
Author: timgeb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-10 12:44:28

Otra forma de hacer lo mismo,

list[0:0] = [a]
 34
Author: v2b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-28 18:38:16

Se pueden hacer nuevas listas simplemente sumando listas.

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
 -1
Author: Erico9001,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-26 14:15:01