Maison >développement back-end >Tutoriel Python >Pourquoi la modification d'une liste passée en paramètre dans une fonction n'affecte-t-elle pas la liste d'origine ?

Pourquoi la modification d'une liste passée en paramètre dans une fonction n'affecte-t-elle pas la liste d'origine ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 01:12:03721parcourir

Why Does Modifying a List Passed as a Parameter in a Function Not Affect the Original List?

Modifier des listes dans des fonctions

En programmation, il est courant de travailler avec des listes, en particulier dans les fonctions qui manipulent des données. Cependant, un problème survient lorsque vous tentez de modifier des listes passées en paramètres dans une fonction.

Considérez l'extrait de code suivant :

def function1(list_arg):
    a = function2()  # returns an array of numbers
    list_arg = list(a)

list1 = [0] * 5
function1(list1)

Vous pouvez vous attendre à ce que list1 soit modifié après avoir appelé function1, mais il reste inchangé. En effet, lors de l'attribution de quelque chose à la variable list_arg, cela pointe vers une nouvelle valeur. Cependant, la liste d'origine n'est pas affectée.

Pour surmonter ce problème, vous pouvez modifier les éléments de la liste d'origine :

def function1(list_arg):
    a = function2()  # returns an array of numbers
    list_arg[:] = list(a)

L'utilisation de list_arg[:] remplace efficacement tous les éléments de la liste originale. Cependant, il convient de noter que des modifications sur place comme celle-ci peuvent prêter à confusion et ne constituent pas toujours la meilleure approche.

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!

Déclaration:
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