擅长:python、mysql、java
<p>由于Walrus运算符不支持值解包,因此该操作</p>
<p><code>day,hour,mins,sec := i.split(':')</code></p>
<p>这是无效的</p>
<p>建议主要在逻辑比较中使用Walrus运算符,尤其是当需要在比较中重用变量时<因此,我认为对于这种情况,一个简单的<code>datetime.strptime()</code>会更好</em></p>
<p>如果你必须在理解列表时使用海象比较,你可以这样做</p>
<pre><code>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(2020,11, *map(int, time)) # map them from str to int
for i in timestamps
if (time := i.split(':')) # assign the list to the variable time
]
print(timestamps_dt)
</code></pre>
<p>但这会引出一个问题为什么不</p>
<pre><code>timestamps_dt = [
datetime(2020,11, *map(int, i.split(':')))
for i in timestamps
]
</code></pre>
<p>参考<a href="https://www.python.org/dev/peps/pep-0572/#differences-between-assignment-expressions-and-assignment-statements" rel="noreferrer">PEP-572</a></p>