Ich habe dieses Programm, das die Zeit berechnet, die für die Beantwortung einer bestimmten Frage benötigt wird, und die while-Schleife verlässt, wenn die Antwort falsch ist, aber ich möchte die letzte Berechnung löschen, damit ich anrufen kann min()
und es nicht die falsche Zeit ist, sorry, wenn das ist verwirrend.
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))
quelle
Sie sollten dies verwenden
Das Problem mit
Ist, dass es jedes Mal, wenn Sie ein Element entfernen, eine Kopie der Liste erstellt, ist dies nicht sehr effizient
quelle
list.pop()
Entfernt das letzte Element der Liste und gibt es zurück.quelle
Du brauchst:
vor der
for
Schleife.Dies wird
record
auf die aktuellerecord
Liste gesetzt, jedoch ohne das letzte Element. Abhängig von Ihren Anforderungen möchten Sie möglicherweise sicherstellen, dass die Liste nicht leer ist, bevor Sie dies tun.quelle
record.pop()
? (NB: Ich bin sehr neu in Python)pop
aber es ist nicht wirklich notwendig, wenn Sie nur den Gegenstand wegwerfen wollen.Wenn Sie viel mit dem Timing anfangen, kann ich diesen kleinen Kontextmanager (20 Zeilen) empfehlen:
Ihr Code könnte dann so aussehen:
Nur als Referenz, hier ist der Inhalt des Timer- Kontextmanagers vollständig:
quelle
Verwenden
list.pop()
Sie es jetzt einfach, wenn Sie es andersherum verwenden möchten.list.popleft()
quelle
Wenn Sie eine Liste von Listen haben ( in meinem Fall tracked_output_sheet ), in der Sie das letzte Element aus jeder Liste löschen möchten, können Sie den folgenden Code verwenden:
quelle