У меня есть эта программа, которая вычисляет время, необходимое для ответа на конкретный вопрос, и выходит из цикла while, если ответ неверен, но я хочу удалить последнее вычисление, чтобы я мог позвонить, min()
и это было не неподходящее время, извините, если это смущает.
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))
источник
del x[-1]
тамты должен использовать это
del record[-1]
Проблема с
record = record[:-1]
Это то, что он делает копию списка каждый раз, когда вы удаляете элемент, поэтому не очень эффективно
источник
list.pop()
удаляет и возвращает последний элемент списка.источник
Тебе нужно:
record = record[:-1]
перед
for
петлей.Будет установлен
record
текущийrecord
список, но без последнего элемента. Вы можете, в зависимости от ваших потребностей, перед этим убедиться, что список не пуст.источник
record.pop()
? (NB: я новичок в Python)pop
но в этом нет необходимости, если вы просто хотите выбросить предмет.просто используйте
list.pop()
сейчас, если хотите по-другому:list.popleft()
источник
Если вы много занимаетесь таймингом, я могу порекомендовать этот небольшой (20 строк) контекстный менеджер:
Тогда ваш код мог бы выглядеть так:
#!/usr/bin/env python # coding: utf-8 from timer import Timer if __name__ == '__main__': a, record = None, [] while not a == '': with Timer() as t: # everything in the block will be timed a = input('Type: ') record.append(t.elapsed_s) # drop the last item (makes a copy of the list): record = record[:-1] # or just delete it: # del record[-1]
Для справки, вот содержимое диспетчера контекста таймера полностью:
from timeit import default_timer class Timer(object): """ A timer as a context manager. """ def __init__(self): self.timer = default_timer # measures wall clock time, not CPU time! # On Unix systems, it corresponds to time.time # On Windows systems, it corresponds to time.clock def __enter__(self): self.start = self.timer() # measure start time return self def __exit__(self, exc_type, exc_value, exc_traceback): self.end = self.timer() # measure end time self.elapsed_s = self.end - self.start # elapsed time, in seconds self.elapsed_ms = self.elapsed_s * 1000 # elapsed time, in milliseconds
источник
Если у вас есть список списков ( tracked_output_sheet в моем случае), в котором вы хотите удалить последний элемент из каждого списка, вы можете использовать следующий код:
interim = [] for x in tracked_output_sheet:interim.append(x[:-1]) tracked_output_sheet= interim
источник