Maison >développement back-end >Tutoriel Python >Pourquoi ne puis-je pas modifier une liste Python directement dans une boucle « for » ?

Pourquoi ne puis-je pas modifier une liste Python directement dans une boucle « for » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 01:49:09455parcourir

Why Can't I Modify a Python List Directly Within a `for` Loop?

Énigme de modification de liste Python

Lorsqu'ils parcourent une liste en Python à l'aide d'une boucle for, les utilisateurs peuvent rencontrer une incapacité inattendue à modifier ses éléments sans utiliser des compréhensions de liste.

Pourquoi l'inaccessibilité ?

Le nœud du problème réside dans le comportement du for i in construction de boucle li. En interne, il itère comme suit :

for idx in range(len(li)):
    i = li[idx]
    i = 'foo'

Comme on le voit, i se voit initialement attribuer une référence à un élément de la liste. Toute modification ultérieure de i n'affecte que la variable locale, pas l'élément de liste lui-même.

Résoudre le dilemme

Pour résoudre ce problème, on peut soit tirer parti des compréhensions de liste :

li = ["foo" for i in li]

Ou parcourez les indices explicitement :

for idx in range(len(li)):
    li[idx] = 'foo'

Alternativement, enumerate peut être utilisé pour simplifier le processus :

for idx, item in enumerate(li):
    li[idx] = 'foo'

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