Asignación de múltiples o el mismo valor a múltiples variables en Python

Negocio

En Python, el operador = se utiliza para asignar valores a las variables.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Como en el ejemplo anterior, puede asignar valores a múltiples variables a la vez en lugar de una a la vez, lo cual es conveniente porque sólo requiere una simple línea de código para escribir.

Se describen los dos casos siguientes.

  • Asignar varios valores a múltiples variables
  • Asignar el mismo valor a varias variables

Asignar varios valores a múltiples variables

Se pueden asignar múltiples valores a varias variables simultáneamente separando las variables y los valores con comas.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Se aceptan tres o más variables, cada una de un tipo diferente.

a, b, c = 0.1, 100, 'string'

print(a)
# 0.1

print(b)
# 100

print(c)
# string

Si hay una variable en el lado izquierdo, se asigna como una tupla.

a = 100, 200

print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>

Si el número de variables del lado izquierdo no coincide con el número de valores del lado derecho, se producirá un error ValueError, pero el resto puede asignarse como una lista añadiendo un asterisco a la variable.

# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)

# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)

a, *b = 100, 200, 300

print(a)
print(type(a))
# 100
# <class 'int'>

print(b)
print(type(b))
# [200, 300]
# <class 'list'>

*a, b = 100, 200, 300

print(a)
print(type(a))
# [100, 200]
# <class 'list'>

print(b)
print(type(b))
# 300
# <class 'int'>

Para obtener más información sobre los asteriscos y sobre cómo asignar elementos de una tupla o lista a múltiples variables, consulte el siguiente artículo.

Asignar el mismo valor a varias variables

El mismo valor puede ser asignado a múltiples variables usando = consecutivamente. Esto es útil para inicializar múltiples variables con el mismo valor.

a = b = 100

print(a)
# 100

print(b)
# 100

Se aceptan más de 3 piezas.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Después de asignar el mismo valor, se puede asignar otro valor a uno de ellos.

a = 200

print(a)
# 200

print(b)
# 100

Tenga cuidado al asignar objetos mutables como listas y tipos de diccionario, en lugar de objetos inmutables (sin cambios) como enteros, números de punto flotante y cadenas.

Utilizar = de forma consecutiva significa que todas las variables apuntan al mismo objeto, por lo que si se cambia el valor de un elemento o se añade uno nuevo, los demás también cambiarán.

a = b = [0, 1, 2]

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Lo mismo que a continuación.

b = [0, 1, 2]
a = b

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Si desea procesarlas por separado, sólo tiene que asignarlas a cada una.

after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation

a = [0, 1, 2]
b = [0, 1, 2]

print(a is b)
# False

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [0, 1, 2]

También hay métodos para generar copias superficiales y profundas con copy() y deepcopy() en el módulo copy.

Copied title and URL