Comment modifier une liste dans une fonction en Python : réaffectation ou modification d'élément ?

DDD
Libérer: 2024-10-28 21:03:30
original
308 Les gens l'ont consulté

How to Modify a List Within a Function in Python: Reassignment vs. Element Modification?

Modifier une liste au sein d'une fonction

Lorsque vous travaillez avec des listes au sein de fonctions, il est important de comprendre le concept de références et d'attribution de valeur. En Python, les paramètres de liste transmis aux fonctions reçoivent une référence à la liste d'origine, pas une copie. La modification de la liste à l'intérieur de la fonction modifie directement la liste d'origine.

Illustration du problème

Considérez le code suivant :

<code class="python">def function1(list_arg):
    a = function2()  # returns an array of numbers
    list_arg = list(a)  # Assign a new list to list_arg

list1 = [0] * 5
function1(list1)
print(list1)
# Output: [0, 0, 0, 0, 0]</code>
Copier après la connexion

Dans cet exemple, nous avions l'intention de modifier la liste passée list1 avec les éléments du tableau a. Cependant, le code ne fonctionne pas car, dans la ligne list_arg = list(a), nous attribuons une nouvelle liste à list_arg, ce qui rompt effectivement le lien vers list1.

Solution : Modifier Éléments de la liste

Pour modifier correctement la liste d'origine, nous devons attribuer les nouveaux éléments à ses éléments individuels au lieu de réaffecter la liste entière. Ceci peut être réalisé en utilisant le découpage :

<code class="python">list_arg[:] = list(a)</code>
Copier après la connexion

Cela attribue le contenu de list(a) à tous les éléments de list_arg. Le découpage [:] sélectionne toute la plage d'éléments dans list_arg.

Conclusion

Lorsque vous travaillez avec des listes dans des fonctions, n'oubliez pas que la réaffectation remplace la liste existante, tout en modifiant elements préserve la liste originale. Utilisez le découpage pour modifier les éléments d'une liste, en vous assurant que la liste d'origine reste intacte.

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