Je dois parcourir une liste de plus de 1000 numéros et supprimer le premier numéro s'il est plus petit que le suivant.
Par exemple:
[10,2,10,8,5,6,1,2,9]
serait converti en [10,10,9]
.
Voici ma mise en œuvre actuelle:
oddList = [17,2,10,6,3,4,3,8,3,6]
for x in oddList[x:y]:
for y in oddList[x:y]:
if x < y:
oddList.pop()
print(oddList)
Ici, oddList devrait ressembler à [17,10,8,6]
.
Cependant, j'obtiens l'erreur qui y
précède l'affectation. Ceci est la dernière partie de mon programme et je suis venu avec cela en essayant de rechercher pop()
, de manipuler des listes et de paramètres.
La raison pour laquelle votre code ne fonctionne pas est que vous n'avez pas déclaré les variables x
et y
que vous ne les avez définies que pendant la boucle for (il ne connaît pas encore les valeurs initiales de x
et y
).
En outre, il semble que vous ayez utilisé la recherche par force brute pour trouver un élément plus important dans la liste. Vous n'avez pas besoin de force brute et le code peut également être optimisé pour O(N)
. Commencez par la fin de la liste et enregistrez le plus grand élément actuel. Si current element
est <
que largest element
, vous pouvez supprimer l'élément actuel (car il y aura toujours un élément supérieur à lui sur le côté droit).
Voici la nouvelle implémentation:
oddList = [3,17,2,10,6,3,4,3,8,3,6]
maxElement = 0
for i in range(len(oddList)-1,-1,-1):
if(oddList[i] < maxElement):
oddList.pop(i)
i+=1
else:
maxElement = oddList[i]
print(oddList)
Sur la oddList
vous obtenez votre résultat attendu, [17, 10, 8, 6]
.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots