0
votes

J'ai essayé de construire un algorithme à certains chiffres hors de la liste, il passe des chiffres?

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é: xxx

la liste qui est imprimée est [13, 3, 23] .

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: xxx

Pourquoi ignore-t-il le 3?


0 commentaires

5 Réponses :


3
votes

0 commentaires

1
votes

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)


0 commentaires

0
votes

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]


1 commentaires

la sortie incorrecte. votre sortie devrait être [2,3,1] et ce n'est pas s'il veut



0
votes

Un doublure pour ce faire en utilisant la compréhension

m = [x for x in m if 11 <= x <= 88]


0 commentaires

0
votes

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) xxx


0 commentaires