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