我有这个程序,计算回答特定问题所花费的时间,并在答案不正确时退出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))

当前回答

你需要:

record = record[:-1]

在for循环之前。

这将把记录设置为当前记录列表,但不包含最后一项。根据需要,您可能希望在执行此操作之前确保列表不为空。

其他回答

你需要:

record = record[:-1]

在for循环之前。

这将把记录设置为当前记录列表,但不包含最后一项。根据需要,您可能希望在执行此操作之前确保列表不为空。

你应该用这个

del record[-1]

问题在于

record = record[:-1]

是不是每次你删除一个项目时,它都会复制一份列表,所以不是很有效

list.pop()删除并返回列表的最后一个元素。

必须使用*list,_ = list,如下例所示

record = [1,2,3]
*record,_ = record
record
---
[1, 2]

如果我理解正确,你可以使用切片符号来保留除最后一项以外的所有内容:

record = record[:-1]

但更好的方法是直接删除该项:

del record[-1]

注意1:注意使用record = record[:-1]并不真正删除最后一个元素,而是将子列表分配给record。如果您在函数中运行它,而record是一个参数,则会产生不同。使用record = record[:-1],原始列表(在函数之外)不变,使用del record[-1]或record.pop(),列表被改变。(正如@pltrdy在评论中所说)

注2:代码可以使用一些Python习语。我强烈推荐大家读读这篇文章: 像Pythonista一样编写代码:地道的Python(通过wayback machine存档)。