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
Libérer: 2024-12-28 01:49:09
original
459 Les gens l'ont consulté

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'
Copier après la connexion

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]
Copier après la connexion

Ou parcourez les indices explicitement :

for idx in range(len(li)):
    li[idx] = 'foo'
Copier après la connexion

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

for idx, item in enumerate(li):
    li[idx] = 'foo'
Copier après la connexion

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 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