0

假设以下代码:

from datetime import datetime

start_time = datetime.now()
end_time = datetime.now()

delta = end_time - start_time
delta_ms = delta.microseconds

将 timedelta 对象转换为分钟、秒和毫秒的最优雅方法是什么?

我在下面的单行需要两次计算divmod(delta_ms,1000),有没有办法将其保持在一行,只需要计算一次?

mins,secs,ms = divmod(divmod(delta_ms,1000),60) + (divmod(delta_ms,1000)[1],)

我也有以下,这是两行代码,但只计算divmod(delta_ms,1000)一次:

unwrap = lambda x: divmod(x[0],60) + (x[1],)
mins,secs,ms = unwrap(divmod(delta_ms,1000))
4

1 回答 1

2

首先,[0]您第二次错过了 a divmod:) 您可能想要更改它:

mins,secs,ms = divmod(divmod(delta_ms,1000)[0],60) + (divmod(delta_ms,1000)[1],)

回答您的问题,如果您正在寻找优雅的基于它占用的行数,那么您的上述解决方案将是最重要的。但是,您正在运行divmod一个额外的、不必要的时间,这可以在一行中解决(更不优雅,使用;):

var1, var2 = divmod(delta_ms,1000);mins,secs,ms = divmod(var1,60) + (var2,)

或两行:

var1, var2 = divmod(delta_ms,1000)
mins,secs,ms = divmod(var1,60) + (var2,)
于 2015-04-14T04:20:30.237 回答