J'ai ce programme qui calcule le temps nécessaire pour répondre à une question spécifique, et quitte la boucle while lorsque la réponse est incorrecte, mais je veux supprimer le dernier calcul, donc je peux appeler min()
et ce n'est pas le mauvais moment, désolé si Ceci est déroutant.
from time import time
q = input('What do you want to type? ')
a = ' '
record = []
while a != '':
start = time()
a = input('Type: ')
end = time()
v = end-start
record.append(v)
if a == q:
print('Time taken to type name: {:.2f}'.format(v))
else:
break
for i in record:
print('{:.2f} seconds.'.format(i))
la source
vous devriez utiliser ceci
Le problème avec
Est-ce qu'il fait une copie de la liste chaque fois que vous supprimez un élément, ce n'est donc pas très efficace
la source
list.pop()
supprime et renvoie le dernier élément de la liste.la source
Vous avez besoin:
avant la
for
boucle.Cela sera défini
record
sur larecord
liste actuelle mais sans le dernier élément. Vous pouvez, selon vos besoins, vouloir vous assurer que la liste n'est pas vide avant de faire cela.la source
record.pop()
? (NB: je suis très nouveau en python)pop
mais ce n'est pas vraiment nécessaire si vous voulez simplement jeter l'objet.Si vous faites beaucoup avec le timing, je peux vous recommander ce petit gestionnaire de contexte (20 lignes):
Votre code pourrait ressembler à ceci alors:
Juste pour référence, voici le contenu du gestionnaire de contexte Timer dans son intégralité:
la source
utilisez simplement
list.pop()
maintenant si vous le souhaitez dans l'autre sens, utilisez:list.popleft()
la source
Si vous avez une liste de listes ( tracked_output_sheet dans mon cas), où vous souhaitez supprimer le dernier élément de chaque liste, vous pouvez utiliser le code suivant:
la source