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
Libérer: 2024-12-06 16:08:13
original
843 Les gens l'ont consulté

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

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

Vous pouvez également parcourir les indices directement :

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

print(li)
# Output: ["foo", "foo"]
Copier après la connexion

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

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

print(li)
# Output: ["foo", "foo"]
Copier après la connexion

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!

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