Tengo esto:
>>> a = [1, 2, 4]
>>> print a
[1, 2, 4]
>>> print a.insert(2, 3)
None
>>> print a
[1, 2, 3, 4]
>>> b = a.insert(3, 6)
>>> print b
None
>>> print a
[1, 2, 3, 6, 4]¿Hay alguna forma de obtener la lista actualizada como resultado, en lugar de actualizar la lista original en su lugar?
                    
                        python
                                python-2.7
                                list
                                insert
                                
                    
                    
                        ATOzTOA
fuente
                
                fuente

b = a[:].insert(2,3)parece bastante corto, no afecta a la lista original y es bastante descriptivo.>>> a = [1, 2, 3, 4] >>> b = a[:].insert(2, 5) >>> print b NoneRespuestas:
l.insert(index, obj)en realidad no devuelve nada. Simplemente actualiza la lista.Como dijo ATO, puede hacerlo
b = a[:index] + [obj] + a[index:]. Sin embargo, otra forma es:fuente
El enfoque más eficiente en rendimiento
También puede insertar el elemento utilizando la indexación de sectores en la lista. Por ejemplo:
Para insertar varios elementos juntos en un índice determinado , todo lo que necesita hacer es usar uno
listde los múltiples elementos que desea insertar. Por ejemplo:Alternativa usando la comprensión de listas (pero muy lenta en términos de rendimiento) :
Como alternativa, también se puede lograr utilizando la comprensión de listas con
enumerate. (Pero no lo haga de esta manera. Es solo para ilustrar) :Comparación de rendimiento de todas las soluciones
Aquí está la
timeitcomparación de todas las respuestas con la lista de 1000 elementos para Python 3.4.5:Respuesta mía usando inserción en rodajas: la más rápida (3,08 µseg por ciclo)
Respuesta aceptada de ATOzTOA basada en la combinación de listas divididas - Segundo (6,71 µseg por ciclo)
La respuesta de Rushy Panchal con la mayoría de los votos usando
list.insert(...)- Tercero (26.5 usec por ciclo)Mi respuesta con List Comprehension y
enumerate- Cuarto (muy lento con 168 µseg por ciclo)fuente
3, 3.5en esa lista (en orden) ->a[2:2] = [3,3.5]. Muy ordenadolist.insertasignación de corte), y en Python 3.8 esta diferencia se ha desvanecido por completo. La forma más clara de insertar un elemento es utilizarlist.insert, obviamente.Lo más corto que tengo:
b = a[:2] + [3] + a[2:]fuente
El enfoque más limpio es copiar la lista y luego insertar el objeto en la copia. En Python 3, esto se puede hacer a través de
list.copy:En Python 2 se puede copiar la lista a través de
new = old[:](esto también funciona en Python 3).En términos de rendimiento, no hay diferencia con otros métodos propuestos:
fuente
Utilice el método insert () de la lista de Python . Uso:
Ejemplo:
Devoluciones
[1, 2, 3, 4, 5]fuente
Is there anyway I can get the updated list as result, instead of updating the original list in place?tu respuesta hace lo contrario.