Comprendre la modification d'itération lors de la suppression d'une liste
Ce code Python ci-dessous est destiné à supprimer des éléments alternatifs d'une liste :
a = list(range(10)) remove = False for b in a: if remove: a.remove(b) remove = not remove print(a)
Cependant, il produit une sortie inattendue de [0, 2, 3, 5, 6, 8, 9] au lieu de [0, 2, 4, 6, 8]. Cela découle de la nature dynamique du processus d'itération.
Pourquoi les valeurs de sortie sont [0, 2, 3, 5, 6, 8, 9] :
Au fur et à mesure que la boucle parcourt les éléments de a, elle modifie la liste en supprimant des éléments spécifiques. Cela affecte l'itérateur sous-jacent et explique le modèle de suppression dans la sortie. Voici une description étape par étape :
Absence d'erreur Message :
Python ne génère pas d'erreur concernant l'itérateur modifié car le langage donne la priorité aux performances. La détection et la gestion de toutes les modifications d'itération possibles entraîneraient une surcharge importante. Ainsi, Python privilégie la vitesse d'exécution par rapport aux messages d'erreur explicites dans ces situations.
Cohérence avec les versions antérieures de Python :
Le comportement décrit ici a été cohérent dans toutes les versions de Python, datant retour à 1.4. C'est une caractéristique intrinsèque des implémentations de séquences mutables de gérer les modifications d'itération de cette manière.
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!