¿Cuál es la diferencia entre la lista de [-1:] [0] y la lista [len (lista) -1]?
Pregunta
Para que no quiere decir que el último elemento de una lista de Python: ¿cuál es la diferencia entre
myList[-1:][0]
y
myList[len(myList)-1]
pensé que no había ninguna diferencia, pero luego he intentado esto
>>> list = [0]
>>> list[-1:][0]
0
>>> list[-1:][0] += 1
>>> list
[0]
>>> list[len(list)-1] += 1
>>> list
[1]
Me sorprendió un poco ...
Solución
Al poner rebanando [-1:], la lista devuelta es un poco profunda-copia, no referencia. así [-1:] [0] modifica la nueva lista. [Len (lista) -1] es la referencia al último objeto.
Otros consejos
list[-1:]
crea una nueva lista. Para obtener el mismo comportamiento que list[len(list)-1]
tendría que devolver una vista de algún tipo de list
, pero como he dicho, se crea una nueva lista temporal. A continuación, procederá a editar la lista temporal.
De todos modos, usted sabe que puede utilizar list[-1]
para la misma cosa, ¿verdad?
rebanar crea copia (copia superficial). A menudo se utiliza como una expresión idiomática copia superficial.
es decir.
list2 = list1[:]
es equivalente a
import copy
list2 = copy.copy(list1)