variables de Python tienen referencias a los valores . Por lo tanto, cuando defina la lista palin
, ingrese el valor al que hace referencia polly
, no la variable en sí.
Debe imaginar los valores como globos, con variables que son hilos vinculados a esos globos. "alive"
es un globo, polly
es solo un hilo de ese globo, y la lista palin
tiene un diferente hilo vinculado a ese mismo globo. En Python, una lista es simplemente una serie de temas, todos de partida numerado en 0.
Lo que se hace a continuación es atar la cuerda polly
a un nuevo globo "dead"
, pero la lista todavía se aferra a la vieja hilo atado a el globo "alive"
.
Puede reemplazar esa cadena por "alive"
mantenida por la lista al reasignar la lista por índice para hacer referencia a cada hilo; en su ejemplo que es el hilo 1
:
>>> palin[1] = polly
>>> palin
['parrot', 'dead']
Aquí simplemente Até el hilo palin[1]
a lo mismo polly
está ligado a, sea lo que sea.
Tenga en cuenta que cualquier colección en python, como dict
, set
, tuple
, etc. son simplemente colecciones de hilos también. Algunos de estos pueden tener sus hilos intercambiados por diferentes hilos, como listas y dicts, y eso es lo que hace que algo en python sea "mutable".
Las cadenas, por otro lado, son no mutable. Una vez que define una cadena como "dead"
o "alive"
, es un globo. Puede atarlo con un hilo (una variable, una lista o lo que sea), pero no puede reemplazar letras dentro de él. Solo puede atar ese hilo a una cadena completamente nueva .
La mayoría de las cosas en python pueden actuar como globos. Los enteros, cadenas, listas, funciones, instancias, clases, todos pueden estar vinculados a una variable o vinculados a un contenedor.
Le recomendamos que lea Ned Batchelder's treatise on Python names también.
relacionada: http://stackoverflow.com/q/11690220/748858 – mgilson