回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我已经对datetime.time的列表进行了排序,并希望创建类似的间隔。如果我有</p>
<pre><code>a = [datetime.time(0,0), datetime.time(8,0), datetime.time(13,0), datetime.time(17,0)]
</code></pre>
<p>结果应该是这样的:</p>
<pre><code>c = [[datetime.time(0,0),datetime.time(8,0)], [datetime.time(8,0),datetime.time(13,0)],
[datetime.time(13,0),datetime.time(17,0)], [datetime.time(17,0),datetime.time(0,0)]]
</code></pre>
<p>这可以通过简单的循环来实现,但是如果存在更好的解决方案呢?</p>
<p><strong>使用循环:</strong></p>
<pre><code>>>> a=[datetime.time(0, 0), datetime.time(3, 0), datetime.time(8, 0), datetime.time(11, 0)]
>>>
>>> r = []
>>>
>>> for i in range(0,len(a)):
... if i+1 < len(a):
... r.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>([a[i],a[i+1]])
... else:
... r.append([a[i],a[0]])
...
>>> r
[[datetime.time(0, 0), datetime.time(3, 0)], [datetime.time(3, 0), datetime.time(8, 0)], [datetime.time(8, 0), datetime.time(11, 0)], [datetime.time(11, 0), datetime.time(0, 0)]]
>>>
</code></pre>
<p>如果我希望结果是</p>
<pre><code>[[datetime.time(0, 0), datetime.time(2, 59, 59)], [datetime.time(3, 0), datetime.time(7, 59, 59)], [datetime.time(8, 0), datetime.time(10, 59, 59)], [datetime.time(11, 0), datetime.time(23, 59, 59)]]
</code></pre>