如何删除列表中的最后一项?

2024-04-20 08:01:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,它计算回答一个特定问题所需的时间,当回答不正确时退出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))

Tags: tofrom程序formatinputtimetype错误
3条回答

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

你应该用这个

del record[-1]

问题在于

record = record[:-1]

每次删除一个项目时它都会复制一个列表,所以效率不高

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

record = record[:-1]

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

del record[-1]

注意1:注意使用record=record[:-1]并不会真正删除最后一个元素,而是将子列表分配给record。如果您在函数内部运行它,而record是一个参数,那么这就有区别了。当record=record[:-1]时,原始列表(函数外部)保持不变,而当del record[-1]或record.pop()时,列表将更改。(如@pltrdy在评论中所述)

注意2:代码可以使用一些Python习惯用法。我强烈建议您阅读以下内容:
Code Like a Pythonista: Idiomatic Python(通过回程机器存档)。

相关问题 更多 >