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 None
Respuestas:
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
list
de 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
timeit
comparació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.5
en esa lista (en orden) ->a[2:2] = [3,3.5]
. Muy ordenadolist.insert
asignació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.