218

特定の質問に答えるのにかかる時間を計算し、答えが正しくない場合は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))
4

8 に答える 8

341

質問を正しく理解していれば、スライス表記を使用して最後の項目以外のすべてを保持できます。

record = record[:-1]

しかし、より良い方法は、アイテムを直接削除することです:

del record[-1]

注 1: record = record[:-1] を使用しても、実際には最後の要素が削除されるわけではなく、サブリストが record に割り当てられることに注意してください。関数内で実行し、レコードがパラメーターである場合、これは違いを生みます。record = record[:-1] では元のリスト (関数の外側) は変更されず、del record[-1] または record.pop() ではリストが変更されます。(コメントで@pltrdyが述べたように)

注 2: コードでは、いくつかの Python イディオムを使用できます。これを読むことを強くお勧めします:
Pythonista のようなコード: Idiomatic Python (wayback machine archive 経由)。

于 2013-08-11T08:10:03.703 に答える
10

必要なもの:

record = record[:-1]

forループ前。

これはrecord現在のrecordリストに設定されますが、最後の項目はありません。必要に応じて、これを行う前にリストが空でないことを確認したい場合があります。

于 2013-08-11T08:08:10.487 に答える