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

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