En esta lección se trata la relación entre variables y objetos en Python, haciendo hincapié en la modificación de variables.
Para entender cómo funcionan las variables en Python, hace falta tener en cuenta tres aspectos:
Cuando se asigna por primera vez un valor a una variable, Python:
El valor de la variable es el valor almacenado por el objeto.
Cuando se asigna un nuevo valor a una variable creada anteriormente, el valor de la variable será el nuevo valor almacenado, pero con respecto a los objetos (que son los que realmente almacenan los valores) pueden darse tres situaciones:
Los tres ejemplos siguientes, ilustran estas tres situaciones. Los ejemplos están acompañados de dibujos en los que se muestran los objetos (con los valores que almacenan) y las variables (como etiquetas asociadas a los objetos).
Cambio de valor de una variable (objetos inmutables)
>>> a = 10 >>> a 10 >>> a = 20 >>> a 20
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objetos inmutables) - Paso 1
>>> a = 10
Al asignar a la variable "a" el valor 10, Python crea el objeto "número entero 10" y le asocia la etiqueta "a". El objeto número entero es inmutable, es decir, no puede cambiar.
Cambio de valor de una variable (objetos inmutables) - Paso 2
>>> a = 10 >>> a 10
Al pedir el valor de la variable, se muestra el valor 10.
Cambio de valor de una variable (objetos inmutables) - Paso 3
>>> a = 10 >>> a 10 >>> a = 20
Al asignar a la variable "a" el valor 20, Python crea el objeto "número entero 20" y le asocia la etiqueta "a", que deja de estar asociada al objeto "número entero 10".
Cambio de valor de una variable (objetos mutables que no se modifican)
>>> a = [10, 11] >>> a [10, 11] >>> a = [20, 21] >>> a [20, 21]
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 1
>>> a = [10, 11]
Al asignar a la variable "a" el valor [10, 11], Python crea el objeto "lista [10, 11]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 2
>>> a = [10, 11] >>> a [10, 11]
Al pedir el valor de la variable, se muestra el valor [10, 11].
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 3
>>> a = [10, 11] >>> a [10, 11] >>> a = [20, 21]
Al asignar a la variable "a" el valor [20, 21], Python crea el objeto "lista [20, 21]" y le asocia la etiqueta "a", que deja de estar asociada al objeto "lista [10, 11]".
Cambio de valor de una variable (objeto mutable que sí se modifica)
>>> a = [10, 11] >>> a [10, 11] >>> a[0] = 20 >>> a [20, 11]
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 1
>>> a = [10, 11]
Al asignar a la variable "a" el valor [10, 11], Python crea el objeto "lista [10, 11]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 2
>>> a = [10, 11] >>> a [10, 11]
Al pedir el valor de la variable, se muestra el valor [10, 11].
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 3
>>> a = [10, 11] >>> a [10, 11] >>> a[0] = 20
Al asignar al primer elemento de la lista (a[0]) el valor 20, Python modifica el primer elemento del objeto, que contiene ahora la lista [20, 11]. A diferencia de los ejemplos anteriores, no se crea un nuevo objeto, sino que se modifica el objeto ya existente.
En Python, al modificar una variable se pueden modificar otras variables. Eso ocurre cuando al modificar una variable se modifique el objeto y haya otras variables haciendo referencia al mismo objeto
Para entenderlo, vamos a repetir los tres ejemplos anteriores introduciendo una segunda variable y observando qué ocurre en cada caso.
Cambio de valor de una variable (objetos inmutables)
>>> a = 10 >>> b = a >>> a, b (10, 10) >>> a = 20 >>> a, b (20, 10)
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objetos inmutables) - Paso 1
>>> a = 10
Al asignar a la variable "a" el valor 10, Python crea el objeto "número entero 10" y le asocia la etiqueta "a". El objeto número entero es inmutable, es decir, no puede cambiar.
Cambio de valor de una variable (objetos inmutables) - Paso 2
>>> a = 10 >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (objetos inmutables) - Paso 3
>>> a = 10 >>> b = a >>> a, b (10, 10)
Al pedir el valor de las variables, se muestran los valores (10,10). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (objetos inmutables) - Paso 4
>>> a = 10 >>> b = a >>> a, b (10, 10) >>> a = 20
Al asignar a la variable "a" el valor 20, Python crea el objeto "número entero 20" y le asocia la etiqueta "a", que deja de estar asociada al objeto "número entero 10".
Cambio de valor de una variable (objetos inmutables) - Paso 5
>>> a = 10 >>> b = a >>> a, b (10, 10) >>> a = 20 >>> a, b (20, 10)
Al pedir el valor de las variables, se muestran los valores (20, 10). Las variables "a" y "b" tienen ahora valores distintos ya que están asociadas a objetos distintos. Fíjese en que al modificar una variable no se ha modificado la otra.
Cambio de valor de una variable (objetos mutables que no se modifican)
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> a = [20, 21] >>> a, b ([20, 21], [10, 11])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 1
>>> a = [10, 11]
Al asignar a la variable "a" el valor [10, 11], Python crea el objeto "lista [10, 11]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 2
>>> a = [10, 11] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 3
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11])
Al pedir el valor de las variables, se muestran los valores ([10, 11], [10, 11]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 4
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> a = [20, 21]
Al asignar a la variable "a" el valor [20, 21], Python crea el objeto "lista [20, 21]" y le asocia la etiqueta "a", que deja de estar asociada al objeto "lista [10, 11]".
Cambio de valor de una variable (objetos mutables que no se modifican) - Paso 5
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> a = [20, 21] >>> a, b ([20, 21], [10, 11])
Al pedir el valor de las variables, se muestran los valores ([20, 21], [10, 11]. Las variables tienen ahora valores distintos ya que están asociadas a objetos distintos. Fíjese en que al modificar una variable no se ha modificado la otra.
Cambio de valor de una variable (objeto mutable que sí se modifica)
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> a[0] = 20 >>> a, b ([20, 11], [20, 11])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 1
>>> a = [10, 11]
Al asignar a la variable "a" el valor [10, 11], Python crea el objeto "lista [10, 11]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 2
>>> a = [10, 11] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 3
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11])
Al pedir el valor de las variables, se muestran los valores ([10, 11], [10, 11]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 4
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> a[0] = 20
Al asignar al primer elemento de la lista (a[0]) el valor 20, Python modifica el primer elemento del objeto, que contiene ahora la lista [20, 11].
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 5
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> a[0] = 20 >>> a, b ([20, 11], [20, 11])
Al pedir el valor de las variables, se muestran los valores ([20, 11], [20, 11]. Las variables tienen ahora el mismo valor ya que están asociadas al mismo objeto. Fíjese en que al modificar una variable se ha modificado la otra.
En este último caso, si al cambiar la variable se cambia el objeto, da lo mismo qué variable cambie el objeto:
Cambio de valor de una variable (objeto mutable que sí se modifica)
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> b[0] = 20 >>> a, b ([20, 11], [20, 11])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 1
>>> a = [10, 11]
Al asignar a la variable "a" el valor [10, 11], Python crea el objeto "lista [10, 11]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 2
>>> a = [10, 11] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 3
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11])
Al pedir el valor de las variables, se muestran los valores ([10, 11], [10, 11]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 4
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> b[0] = 20
Al asignar al primer elemento de la lista (b[0]) el valor 20, Python modifica el primer elemento del objeto, que contiene ahora la lista [20, 11].
Cambio de valor de una variable (objeto mutable que sí se modifica) - Paso 5
>>> a = [10, 11] >>> b = a >>> a, b ([10, 11], [10, 11]) >>> b[0] = 20 >>> a, b ([20, 11], [20, 11])
Al pedir el valor de las variables, se muestran los valores ([20, 11], [20, 11]. Las variables tienen ahora el mismo valor ya que están asociadas al mismo objeto. Fíjese en que al modificar una variable se ha modificado la otra.
Los objetos inmutables no se pueden modificar de ninguna manera. Cuando una variable está asociada a un objeto inmutable, al modificar la variable no se modifica el objeto, sino que la variable se asocia a un nuevo objeto.
Sin embargo, los objetos mutables se pueden modificar. Cuando una variable está asociada a un objeto mutable, al modificar la variable se puede modificar el objeto en algunos casos, pero no en otros.
Veamos en el caso de las listas las diferentes maneras de modificar la variable y en qué casos no modifica el objeto y en qué casos sí.
Cambio de valor de una variable (a = a + [4])
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a = a + [4] >>> a, b ([1, 2, 3, 4], [1, 2, 3])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (a = a + [4]) - Paso 1
>>> a = [1, 2, 3]
Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (a = a + [4]) - Paso 2
>>> a = [1, 2, 3] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (a = a + [4]) - Paso 3
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (a = a + [4]) - Paso 4
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a = a + [4]
El operador + crea un nuevo objeto con los valores del antiguo añadiéndole el valor [4], es decir, Python crea el objeto "lista [1, 2, 3, 4]" y le asocia la etiqueta "a", que deja de estar asociada al objeto "lista [1, 2, 3]".
Cambio de valor de una variable (a = a + [4]) - Paso 5
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a = a + [4] >>> a, b ([1, 2, 3, 4], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3, 4], [1, 2, 3]. Las variables tienen ahora valores distintos ya que están asociadas a objetos distintos. Fíjese en que al modificar una variable no se ha modificado la otra.
Cambio de valor de una variable (a += [4])
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a += [4] >>> a, b ([1, 2, 3, 4], [1, 2, 3, 4])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (a += [4]) - Paso 1
>>> a = [1, 2, 3]
Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (a += [4]) - Paso 2
>>> a = [1, 2, 3] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (a += [4]) - Paso 3
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (a += [4]) - Paso 4
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a += [4]
El operador += añade el valor [4] al objeto, que contiene ahora la lista [1, 2, 3, 4].
Cambio de valor de una variable (a += [4]) - Paso 5
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a += [4] >>> a, b ([1, 2, 3, 4], [1, 2, 3, 4])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3, 4], [1, 2, 3, 4]. Las variables tienen ahora el mismo valor ya que están asociadas al mismo objeto. Fíjese en que al modificar una variable se ha modificado la otra.
Cambio de valor de una variable (a.append(4))
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a.append(4) >>> a, b ([1, 2, 3, 4], [1, 2, 3, 4])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (a.append(4)) - Paso 1
>>> a = [1, 2, 3]
Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (a.append(4)) - Paso 2
>>> a = [1, 2, 3] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (a.append(4)) - Paso 3
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (a.append(4)) - Paso 4
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a.append(4)
El método append añade el valor [4] al objeto, que contiene ahora la lista [1, 2, 3, 4].
Cambio de valor de una variable (a.append(4)) - Paso 5
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a.append(4) >>> a, b ([1, 2, 3, 4], [1, 2, 3, 4])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3, 4], [1, 2, 3, 4]. Las variables tienen ahora el mismo valor ya que están asociadas al mismo objeto. Fíjese en que al modificar una variable se ha modificado la otra.
Cambio de valor de una variable (a[1] = 4)
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1] = 4 >>> a, b ([1, 4, 3], [1, 4, 3])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (a[1] = 4) - Paso 1
>>> a = [1, 2, 3]
Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (a[1] = 4) - Paso 2
>>> a = [1, 2, 3] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (a[1] = 4) - Paso 3
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (a[1] = 4) - Paso 4
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1] = 4
Al modificar un valor de la lista se modifica el objeto, que contiene ahora la lista [1, 4, 3].
Cambio de valor de una variable (a[1] = 4) - Paso 5
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1] = 4 >>> a, b ([1, 4, 3], [1, 4, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 4, 3], [1, 4, 3]. Las variables tienen ahora el mismo valor ya que están asociadas al mismo objeto. Fíjese en que al modificar una variable se ha modificado la otra.
Cambio de valor de una variable (a[1:2] = [4])
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1:2] = [4] >>> a, b ([1, 4, 3], [1, 4, 3])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Cambio de valor de una variable (a[1:2] = [4]) - Paso 1
>>> a = [1, 2, 3]
Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Cambio de valor de una variable (a[1:2] = [4]) - Paso 2
>>> a = [1, 2, 3] >>> b = a
Al asignar la variable "a" a la variable "b", Python asocia la etiqueta "b" al mismo objeto que "a".
Cambio de valor de una variable (a[1:2] = [4]) - Paso 3
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor ya que están asociadas al mismo objeto.
Cambio de valor de una variable (a[1:2] = [4]) - Paso 4
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1:2] = [4]
Al modificar una sublista de la lista se modifica el objeto, que contiene ahora la lista [1, 4, 3].
Cambio de valor de una variable (a[1:2] = [4]) - Paso 5
>>> a = [1, 2, 3] >>> b = a >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1:2] = [4] >>> a, b ([1, 4, 3], [1, 4, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 4, 3], [1, 4, 3]. Las variables tienen ahora el mismo valor ya que están asociadas al mismo objeto. Fíjese en que al modificar una variable se ha modificado la otra.
Como se comenta en la lección de Listas, para copiar una lista hay que utilizar la notación de sublistas. De esta manera se consiguen tener dos objetos independientes, como muestra el ejemplo siguiente
Copiar una lista
>>> a = [1, 2, 3] >>> b = a[:] >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1] = [4] >>> a, b ([1, 4, 3], [1, 2, 3])
Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.
Copiar una lista - Paso 1
>>> a = [1, 2, 3]
Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.
Copiar una lista - Paso 2
>>> a = [1, 2, 3] >>> b = a[:]
Al asignar la variable "b" a una sublista de la variable "a" (aunque en este caso la sublista incluya toda la lista), Python crea un nuevo objeto con el mismo contenido y le asocia la etiqueta "b".
Copiar una lista - Paso 3
>>> a = [1, 2, 3] >>> b = a[:] >>> a, b ([1, 2, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor aunque estén asociadas a objetos distintos.
Copiar una lista - Paso 4
>>> a = [1, 2, 3] >>> b = a[:] >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1] = 4
Al modificar un valor de la lista se modifica el objeto, que contiene ahora la lista [1, 4, 3].
Copiar una lista - Paso 5
>>> a = [1, 2, 3] >>> b = a[:] >>> a, b ([1, 2, 3], [1, 2, 3]) >>> a[1] = 4 >>> a, b ([1, 4, 3], [1, 2, 3])
Al pedir el valor de las variables, se muestran los valores ([1, 4, 3], [1, 2, 3]. Las variables tienen ahora valores distintos ya que están asociadas a objetos distintos. Fíjese en que al modificar una variable no se ha modificado la otra.