Maison >développement back-end >Tutoriel Python >Pourquoi la modification des éléments de liste directement dans une boucle Python ne fonctionne-t-elle pas ?

Pourquoi la modification des éléments de liste directement dans une boucle Python ne fonctionne-t-elle pas ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 16:08:13824parcourir

Why Doesn't Modifying List Elements Directly in a Python Loop Work?

Pourquoi la modification d'éléments de liste dans une boucle Python s'avère infructueuse

Lorsqu'ils parcourent une liste en Python, de nombreux programmeurs rencontrent un obstacle inattendu : l'incapacité de modifier ses éléments à travers des boucles traditionnelles. Pour illustrer :

li = ["spam", "eggs"]
for i in li:
    i = "foo"

print(li)
# Output: ["spam", "eggs"]

Malgré l'affectation apparente de "foo" aux éléments de la liste, la liste reste inchangée. Ce comportement déroutant provient de la façon dont Python gère les boucles avec des listes.

En coulisses, les boucles Python fonctionnent en itérant sur les indices de la liste. Dans l'exemple ci-dessus, pour chaque index (correspondant à un élément de la liste), une nouvelle variable temporaire i est créée. Les affectations à i n'affectent que cette variable locale, laissant les éléments de liste réels intacts.

Pour réussir à modifier les éléments de liste, il faut soit utiliser une compréhension de liste comme dans l'exemple fourni :

li = ["foo" for i in li]
print(li)
# Output: ["foo", "foo"]

Vous pouvez également parcourir les indices directement :

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

print(li)
# Output: ["foo", "foo"]

Vous pouvez également exploiter l'enumerate() function :

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

print(li)
# Output: ["foo", "foo"]

En adoptant ces solutions, les programmeurs peuvent modifier en toute confiance les éléments de la liste dans les boucles, évitant ainsi les affectations infructueuses qui laissent leurs listes inchangées.

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