A Python, l’operador = s’utilitza per assignar valors a variables.
a = 100
b = 200
print(a)
# 100
print(b)
# 200
Com a l’exemple anterior, podeu assignar valors a diverses variables alhora en lloc d’una a la vegada, la qual cosa és convenient perquè només requereix una línia de codi senzilla per escriure.
Es descriuen els dos casos següents.
- Assignar diversos valors a diverses variables
- Assigna el mateix valor a diverses variables
Assignar diversos valors a diverses variables
Es poden assignar diversos valors a diverses variables simultàniament separant variables i valors amb comes.
a, b = 100, 200
print(a)
# 100
print(b)
# 200
S’admeten tres o més variables, cadascuna d’un tipus diferent.
a, b, c = 0.1, 100, 'string'
print(a)
# 0.1
print(b)
# 100
print(c)
# string
Si hi ha una variable al costat esquerre, s’assigna com a tupla.
a = 100, 200
print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>
Si el nombre de variables del costat esquerre no coincideix amb el nombre de valors del costat dret, es produirà un error ValueError, però la resta es pot assignar com una llista afegint un asterisc 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'>
Per obtenir més informació sobre els asteriscs i com assignar elements d’una tupla o llista a diverses variables, consulteu l’article següent.
Assigna el mateix valor a diverses variables
El mateix valor es pot assignar a diverses variables utilitzant = consecutivament. Això és útil per inicialitzar diverses variables al mateix valor.
a = b = 100
print(a)
# 100
print(b)
# 100
S’admeten més de 3 peces.
a = b = c = 'string'
print(a)
# string
print(b)
# string
print(c)
# string
Després d’assignar el mateix valor, es pot assignar un altre valor a un d’ells.
a = 200
print(a)
# 200
print(b)
# 100
Aneu amb compte quan assigneu objectes mutables, com ara llistes i tipus de diccionari, en lloc d’objectes immutables (incanviables) com ara nombres enters, nombres de coma flotant i cadenes.
L’ús de = consecutivament significa que totes les variables apunten al mateix objecte, de manera que si canvieu el valor d’un element o afegiu un element nou, l’altre també canviarà.
a = b = [0, 1, 2]
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Igual que a continuació.
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 voleu processar-los per separat, simplement assigneu-los a cadascun.
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]
També hi ha mètodes per generar còpies superficials i profundes amb copy() i deepcopy() al mòdul de còpia.