Agregar 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 me sale errores. El comstackdor maneja a como a entero, por lo tanto, no puedo usar adjuntar, o extender tampoco. ¿Cómo harías esto?

 >>> 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] 

Cómo funciona:

array.insert(index, value)

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

Tenga en cuenta que si está intentando realizar esa operación a menudo, especialmente en los 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] también son operaciones O (n).

La estructura de datos correcta a utilizar es una deque del módulo de collections . los deques exponen una interfaz similar a las de las listas, pero están optimizadas para las modificaciones de ambos puntos finales. Disponen de un método de inserción en la parte delantera.

Manifestación:

 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 

Otra forma de hacer lo mismo,

 list[0:0] = [a] 

Se pueden hacer nuevas listas simplemente agregando listas juntas.

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

Ninguno de estos funcionó para mí. Convertí el primer elemento para formar parte de una serie (una serie de un solo elemento), y convertí el segundo elemento también en una serie, y usé la función de adición.

 l = ((pd.Series()).append(pd.Series())).tolist() 

Según algunos (mínimos) puntos de referencia que utilizan el módulo timeit , parece que lo siguiente tiene un rendimiento similar, si no mejor, que el de la respuesta aceptada

 new_lst = [a, *lst] 

Al igual que con [a] + list esto creará una nueva lista y no mutará lst .

Si su intención es mutar la lista, use lst.insert(0, a) .