Maison > développement back-end > Tutoriel Python > Pourquoi la modification de la liste « y » en Python modifie-t-elle également la liste « x » ?

Pourquoi la modification de la liste « y » en Python modifie-t-elle également la liste « x » ?

WBOY
Libérer: 2023-08-20 11:25:14
avant
1533 Les gens l'ont consulté

Pourquoi la modification de la liste « y » en Python modifie-t-elle également la liste « x » ?

Exemple

Dans cet article, nous verrons si si vous modifiez une liste, disons la liste y, cela changera également la liste x. Pour ce faire, regardons d'abord un exemple avec deux listes et essayons d'utiliser append() et print pour la sortie -

x = []
y = x
print("Value of y = ",y)
print("Value of x = ",x)
y.append(25)

print("\nAfter changing...")
print("Value of y = ",y)
print("Value of x = ",x)
Copier après la connexion

Sortie

('Value of y = ', [])
('Value of x = ', [])

After changing...
('Value of y = ', [25])
('Value of x = ', [25])
Copier après la connexion

Ci-dessus, nous avons vu que la mise à jour de la liste y modifiera également la liste x.

Nous voyons le résultat ci-dessus parce que −

  • Les listes sont mutables, c'est-à-dire que vous pouvez modifier leur contenu.
  • Les variables sont des noms pointant vers des objets.

Ci-dessus, écrire y = x ne crée pas de copie de la liste. Il crée une nouvelle variable y qui fait référence au même objet auquel x fait référence. Cela signifie qu’il n’y a qu’un seul objet, la liste, et que x et y y font référence.

Lorsque append() est appelé, le contenu de l'objet variable passe de [] à [25]. Puisque les deux variables pointent vers le même objet, la valeur modifiée est accessible en utilisant l'une ou l'autre variable [25].

Supposons que nous attribuions un objet immuable à x, alors x et y ne seront plus égaux. C'est parce que les entiers sont immuables -

La traduction chinoise de

Exemple

est :

Exemple

# ints are immutable
x = 5
y = x
print("Value of y = ",y)
print("Value of x = ",x)

# We are creating a new object
x = x + 1
print("\nAfter changing...")
print("Value of y = ",y)
print("Value of x = ",x)
Copier après la connexion

Sortie

('Value of y = ', 5)
('Value of x = ', 5)

After changing...
('Value of y = ', 5)
('Value of x = ', 6)
Copier après la connexion

Quand on écrit x = x + 1, on ne change pas l'int 5 en augmentant sa valeur. Au lieu de cela, nous créons un nouvel objet (int 6) et l'attribuons à x. Après cette affectation, nous avons deux objets (int 6 et 5) et deux variables les référençant.

Par conséquent,

  • Objets mutables - Si nous avons un objet mutable, tel qu'une liste, un dictionnaire, un ensemble, etc., nous pouvons utiliser certaines opérations spécifiques pour le modifier, et toutes les variables qui y font référence verront ce changement.

  • Objet immuable - Si nous avons un objet immuable comme str, int, tuple, etc., toutes les variables qui y font référence verront toujours la même valeur, mais les opérations qui convertissent cette valeur en une nouvelle valeur renverront toujours un nouvel objet .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal