9

リストがある場合 l:

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

リスト内の次の要素が前の要素の 1 秒後にのみ出力されるように、次の forループを制御する方法はありますか?

for i in l:
    print i

言い換えれば、Python でループをエレガントに遅くする方法はありますか?

4

5 に答える 5

18

使用できますtime.sleep

import time

for i in l:
    print i
    time.sleep(1)
于 2013-05-15T00:59:32.317 に答える
10

を使用するtime.sleep(1)と、ループと印刷にも時間がかかるため、ループは 1 秒強で実行されます。より良い方法は、秒の残りの部分をスリープ状態にすることです。を使用してそれを計算できます-time.time()%1

>>> import time
>>> L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in L:
...     time.sleep(-time.time()%1)
...     print i
... 

を使用してこれを観察するのは簡単ですprint i, repr(time.time())

>>> for i in L:
...     time.sleep(-time.time()%1)
...     print i, repr(time.time())
... 
0 1368580358.000628
1 1368580359.001082
2 1368580360.001083
3 1368580361.001095
4 1368580362.001149
5 1368580363.001085
6 1368580364.001089
7 1368580365.001086
8 1368580366.001086
9 1368580367.001085

>>> for i in L:
...     time.sleep(1)
...     print i, repr(time.time())
... 
0 1368580334.104903
1 1368580335.106048
2 1368580336.106716
3 1368580337.107863
4 1368580338.109007
5 1368580339.110152
6 1368580340.111301
7 1368580341.112447
8 1368580342.113591
9 1368580343.114737
于 2013-05-15T01:07:04.253 に答える
5

次を使用してコードの実行を一時停止できますtime.sleep

import time

for i in l:
    print(i)
    time.sleep(1)
于 2013-05-15T01:00:11.503 に答える
3

機能を使用してくださいtime.sleeptime.sleep(1)あなたの機能で行うだけです。

于 2013-05-15T00:59:29.063 に答える