Affectation de plusieurs ou de la même valeur à plusieurs variables en Python

Affaires

En Python, l'opérateur = est utilisé pour attribuer des valeurs aux variables.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Comme dans l'exemple ci-dessus, vous pouvez affecter des valeurs à plusieurs variables à la fois au lieu d'une à la fois, ce qui est pratique car cela ne nécessite qu'une simple ligne de code à écrire.

Les deux cas suivants sont décrits.

  • Attribuer plusieurs valeurs à plusieurs variables
  • Attribuer la même valeur à plusieurs variables

Attribuer plusieurs valeurs à plusieurs variables

Plusieurs valeurs peuvent être attribuées simultanément à plusieurs variables en séparant les variables et les valeurs par des virgules.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Trois variables ou plus, chacune d'un type différent, sont acceptables.

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

print(a)
# 0.1

print(b)
# 100

print(c)
# string

S'il y a une variable sur le côté gauche, elle est assignée comme un tuple.

a = 100, 200

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

Si le nombre de variables à gauche ne correspond pas au nombre de valeurs à droite, il en résultera une erreur ValueError, mais le reste peut être attribué sous forme de liste en ajoutant un astérisque à 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'>

Pour plus d'informations sur les astérisques et sur la manière d'affecter les éléments d'un tuple ou d'une liste à plusieurs variables, consultez l'article suivant.

Attribuer la même valeur à plusieurs variables

La même valeur peut être assignée à plusieurs variables en utilisant = consécutivement. Ceci est utile pour initialiser plusieurs variables à la même valeur.

a = b = 100

print(a)
# 100

print(b)
# 100

Plus de 3 pièces sont acceptables.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Après avoir attribué la même valeur, une autre valeur peut être attribuée à l'un d'entre eux.

a = 200

print(a)
# 200

print(b)
# 100

Faites attention lorsque vous assignez des objets mutables tels que des listes et des types de dictionnaires, plutôt que des objets immuables (non modifiables) tels que des entiers, des nombres à virgule flottante et des chaînes de caractères.

L'utilisation de = consécutivement signifie que toutes les variables pointent vers le même objet, donc si vous modifiez la valeur d'un élément ou ajoutez un nouvel élément, les autres changeront également.

a = b = [0, 1, 2]

print(a is b)
# True

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

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

Idem que ci-dessous.

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 vous souhaitez les traiter séparément, il suffit de les attribuer à chacun.

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]

Il existe également des méthodes pour générer des copies superficielles et profondes avec copy() et deepcopy() dans le module de copie.

Copied title and URL