Mam ten program, który oblicza czas potrzebny na udzielenie odpowiedzi na konkretne pytanie i wychodzi z pętli while, gdy odpowiedź jest niepoprawna, ale chcę usunąć ostatnie obliczenie, więc mogę zadzwonić min()
i nie jest to zły czas, przepraszam, jeśli to jest mylące.
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))
źródło
powinieneś tego użyć
Problem z
Chodzi o to, że tworzy kopię listy za każdym razem, gdy usuwasz element, więc nie jest zbyt wydajny
źródło
list.pop()
usuwa i zwraca ostatni element listy.źródło
Potrzebujesz:
przed
for
pętlą.Spowoduje to ustawienie
record
bieżącejrecord
listy, ale bez ostatniej pozycji. W zależności od potrzeb możesz chcieć upewnić się, że lista nie jest pusta, zanim to zrobisz.źródło
record.pop()
? (Uwaga: Jestem bardzo nowy w Pythonie)pop
, ale to naprawdę nie jest konieczne, jeśli chcesz po prostu wyrzucić przedmiot z dala.Jeśli dużo robisz z synchronizacją, mogę polecić tego małego (20-liniowego) menedżera kontekstu:
Twój kod mógłby wtedy wyglądać tak:
Dla porównania, oto pełna zawartość menedżera kontekstu Timer :
źródło
po prostu użyj
list.pop()
teraz, jeśli chcesz to w inny sposób, użyj:list.popleft()
źródło
Jeśli masz listę list ( w moim przypadku tracked_output_sheet ), z których chcesz usunąć ostatni element z każdej listy, możesz użyć następującego kodu:
źródło