一种优雅的单行解决方案,用于从 divmod 的嵌套元组中提取数据
An elegant one-line solution to extract data from Nested Tuples from divmod
假设以下代码:
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))
首先,您在第二个 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,)
假设以下代码:
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))
首先,您在第二个 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,)