"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment modifier une liste au sein d'une fonction en Python : passage par référence ou modification sur place ?

Comment modifier une liste au sein d'une fonction en Python : passage par référence ou modification sur place ?

Publié le 2024-11-08
Parcourir:342

How to Modify a List Within a Function in Python: Pass by Reference or In-Place Modification?

Modification d'une liste à l'intérieur d'une fonction

Lorsque vous travaillez avec des paramètres de liste dans des fonctions, les références transmises à la fonction pointent vers la liste d'origine. Toutes les modifications apportées à la variable list_arg dans la fonction sont limitées à sa portée locale et n'affecteront pas la liste d'origine.

Pour contourner ce problème et modifier la liste d'origine, il faut attribuer directement des éléments à la liste. au lieu de réaffecter la liste entière à une nouvelle valeur. Voici un exemple :

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

list1 = [0] * 5
function1(list1)
print(list1)  # [1, 2, 3, 4, 5]

Dans ce code modifié, nous utilisons la notation slice list_arg[:] pour affecter les éléments de list(a) à la liste d'origine, modifier efficacement la liste en place.

Il est important de noter que même si les modifications sur place peuvent sembler pratiques, elles peuvent devenir difficiles à comprendre et peuvent prêter à confusion pour les développeurs qui gèrent le code. Les réaffectations explicites sont généralement préférées pour des raisons de clarté et de lisibilité.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3