从divmod的嵌套元组中提取数据的一种优雅的单行解决方案

2024-05-29 04:30:25 发布

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

假设以下代码:

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))

Tags: 代码fromimportdatetimetimestartnowms
1条回答
网友
1楼 · 发布于 2024-05-29 04:30:25

首先,您在第二个divmod中漏掉了一个[0]:),您可能想改变这一点:

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,)

相关问题 更多 >

    热门问题