¿Cuál es la diferencia entre la lista de [-1:] [0] y la lista [len (lista) -1]?

StackOverflow https://stackoverflow.com/questions/681123

  •  22-08-2019
  •  | 
  •  

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

¿Fue útil?

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top