Maison > développement back-end > Tutoriel Python > Comment puis-je éviter les modifications involontaires de listes en Python lors de la transmission de listes à des fonctions ?

Comment puis-je éviter les modifications involontaires de listes en Python lors de la transmission de listes à des fonctions ?

Mary-Kate Olsen
Libérer: 2024-12-02 01:43:10
original
979 Les gens l'ont consulté

How Can I Avoid Unintended List Modifications in Python When Passing Lists to Functions?

Passer des listes par valeur, pas par référence

Lorsque vous traitez des listes en Python, il est important de comprendre le concept de passage par référence, où les modifications apportées à une liste référencée par une autre variable est reflétée dans les deux variables. Cela peut conduire à un comportement inattendu, en particulier lorsque vous travaillez avec plusieurs références à la même liste.

Considérez l'exemple suivant :

a = ['help', 'copyright', 'credits', 'license']
b = a
b.append('XYZ')
print(b)  # Output: ['help', 'copyright', 'credits', 'license', 'XYZ']
print(a)  # Output: ['help', 'copyright', 'credits', 'license', 'XYZ']
Copier après la connexion

Dans cet exemple, b est une référence à la même liste. comme un. Lorsque nous ajoutons « XYZ » à b, il est également ajouté à a, car les deux variables pointent vers la même liste sous-jacente. C'est ce qu'on appelle le passage par référence.

Pour éviter cela, nous devons plutôt transmettre la liste par valeur. En Python, cela peut être réalisé en créant une copie de la liste originale. Il existe plusieurs façons de procéder, mais la plus courante consiste à utiliser l'opérateur slice :

b = a[:]
Copier après la connexion

Cela crée une nouvelle liste qui contient une copie des éléments de a. Toute modification apportée à b n’affectera pas a, et vice versa. Par exemple :

b.append('ABC')
print(b)  # Output: ['help', 'copyright', 'credits', 'license', 'XYZ', 'ABC']
print(a)  # Output: ['help', 'copyright', 'credits', 'license', 'XYZ']
Copier après la connexion

Dans ce cas, ajouter « ABC » à b n'affecte pas a, car ils font désormais référence à des listes différentes.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal