J'ai écrit un script qui me donne une liste de chiffres à un moment donné.
Je n'ai besoin que des chiffres entre 11 et 88.
C'est ce que j'ai essayé, simplifié: la liste qui est imprimée est si j'imprime Les éléments de liste individuels qui vont à l'intérieur de la boucle pour la boucle, je reçois cette sortie: p> Pourquoi ignore-t-il le 3? P> P> P> [13, 3, 23] code>. P>
5 Réponses :
Je pense que vous avez besoin de: se référer Pourquoi c'est une mauvaise idée de supprimer l'élément de la liste tout en itération p> p>
Vous changez de la taille de la liste en même temps que vous êtes itération à travers celle-ci, qu'en général n'est pas une bonne idée. Vous devez plutôt créer une nouvelle liste avec les éléments que vous souhaitez.
m = [13, 2, 3, 23, 1]
new = []
for i in m:
if i > 11 and i < 88:
new.append(i)
print(new)
Essayez ceci:
m = [13, 2, 3, 23, 1] newList = [x for x in m if not ((x<11) or (x>88))] print (newList) Output: [13,23]
la sortie incorrecte. votre sortie devrait être [2,3,1] et ce n'est pas s'il veut
Un doublure pour ce faire en utilisant la compréhension
m = [x for x in m if 11 <= x <= 88]
Parce que vous utilisez la même matrice dans une boucle, si vous supprimez la valeur de la taille de la matrice. Pour éviter cela, vous pouvez utiliser en boucle à faire à ce sujet.
Sous le script
Time O (n) espace o (1) p>