因此,在编码时,我非常喜欢使用列表理解来转换数据,并尽量避免for循环。现在我发现walrus操作符在这方面非常方便,但当我尝试在代码中使用它时,它似乎不起作用。我有下面的代码,希望在一行简单的代码中将包含时间戳数据的字符串转换为datetime对象,但是我遇到了一个语法错误,我不确定正确的语法是什么,有人知道我做错了什么吗
from datetime import datetime
timestamps = ['30:02:17:36',
'26:07:44:25','25:19:30:38','25:07:40:47','24:18:29:05','24:06:13:15','23:17:36:39',
'23:00:14:52','22:07:04:33','21:15:42:20','21:04:27:53',
'20:12:09:22','19:21:46:25']
timestamps_dt = [
datetime(days=day,hours=hour,minutes=mins,seconds=sec)
for i in timestamps
day,hour,mins,sec := i.split(':')
]
由于Walrus运算符不支持值解包,因此该操作
day,hour,mins,sec := i.split(':')
这是无效的
建议主要在逻辑比较中使用Walrus运算符,尤其是当需要在比较中重用变量时<因此,我认为对于这种情况,一个简单的
datetime.strptime()
会更好如果你必须在理解列表时使用海象比较,你可以这样做
但这会引出一个问题为什么不
参考PEP-572
如果要将字符串列表转换为datetime对象列表,可以使用以下一行:
相关问题 更多 >
编程相关推荐